我对 python 非常陌生,我不知道为什么这段代码会给我这个输出。我尝试四处寻找答案,但找不到任何东西,因为我不确定要搜索什么。
像 I'm-5 一样的解释将不胜感激
astring = "hello world"
print(astring[3:7:2])
这给了我:“l”
还有
astring = "hello world"
print(astring[3:7:3])
给我:“lw”
我无法理解为什么。
最佳答案
这是Python中的字符串切片。 切片与常规字符串索引类似,但它只能返回字符串的一部分。
在切片中使用两个参数,例如[a:b]
将返回一个字符串,从索引a
开始直到(但不包括)索引b
。
例如:
"abcdefg"[2:6]
将返回 "cdef"
使用三个参数执行类似的功能,但切片将仅返回选定间隙之后的字符。例如,[2:6:2]
将返回从索引 2 开始到索引 5 的每隔一个字符。
即 "abcdefg"[2:6:2]
将返回 ce
,因为它只计算每两个字符。
在您的情况下,astring[3:7:3]
,切片从索引 3(第二个 l
)开始,并向前移动指定的 3 个字符(第三个参数)到w
。然后它停在索引 7 处,返回 lw
。
事实上,当仅使用两个参数时,第三个参数默认为 1,因此 astring[2:5]
与 astring[2:5:1]
相同.
Python Central对 python 中的字符串切割和切片有一些更详细的解释。
关于python-3.x - 字符串操作困惑? ELI5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54948388/