跳转到主要内容
模块 4 · 第 2 课(共 4)课程中的14/36~10 min
模块课程(2/4)

切片和索引

在Python中,字符串是字符序列:您可以访问 按索引提取单个字符并用切片切出子字符串 语法 [start:stop:step] — 与列表完全相同。

正负指数

Python
s = "Python"
#    0123456
#   -6-5-4-3-2-1
s[0]    # 'P'
s[5]    # 'n'
s[-1]   # 'n'   (ultimo)
s[-2]   # 'o'   (penultimo)

超出范围的访问会引发 IndexError。

切片 [start:stop:step]

Python
s = "Python"
s[0:3]    # 'Pyt'      indici 0,1,2 (stop ESCLUSO)
s[2:]     # 'thon'     dal 2 alla fine
s[:3]     # 'Pyt'      dall'inizio fino al 3 (escluso)
s[:]      # 'Python'   copia completa
s[-3:]    # 'hon'      ultimi 3
s[:-2]    # 'Pyth'     tutto tranne gli ultimi 2

与索引不同,如果索引超出,切片不会引发错误 范围:它尽其所能。

第三个参数:step

Python
s = "Python"
s[::2]    # 'Pto'    salta uno sì uno no
s[1::2]   # 'yhn'    dispari
s[::-1]   # 'nohtyP' INVERSIONE (idiom famoso)

s[::-1] 是反转字符串的惯用方法。

长度和包容性

Python
len("Python")        # 6
"th" in "Python"     # True
"java" in "Python"   # False

负索引和切片步骤

切片的完整语法是s[start:stop:step]。如果省略 start 和 stop 但设置 -1 (s[::-1]) 的负值 step,则会反转字符串。负索引 -1 始终表示字符串的最后一个字符,-2 是倒数第二个字符,依此类推。

尝试一下

锻炼#python.m4.l2.e1
尝试:0加载中...

给定 `word = 'PROGRAMMAZIONE'`,在 `reversed_word` 中获取其反转。评估“reversed_word”。

正在加载编辑器...
显示提示

字[::-1]

3 次尝试后可用的解决方案

复习练习

锻炼#python.m4.l2.e2
尝试:0加载中...

给定 `email = 'ada@example.com'`,在使用 .find 找到索引后,使用切片将域('@'之后的所有内容)提取到 `domain` 中。评估“域”。

正在加载编辑器...
显示提示

电子邮件[email.find('@') + 1:]

3 次尝试后可用的解决方案

额外的挑战

锻炼#python.m4.l2.e3
尝试:0加载中...

给定字符串 \`word = "pythonista"\`,使用切片提取前 3 个字符和后 3 个字符,并将它们连接成一个新字符串 \`short_word\`。最后,评估“short_word”(它应该产生“pytsta”)。

正在加载编辑器...
显示提示

The first 3 characters are word[:3], the last 3 are word[-3:]. Concatenate the two slices.

3 次尝试后可用的解决方案