对于以下代码,为什么答案不是'yoif!'带着感叹号?
>>> s = 'Python is fun!'
>>> s[1:12:3]
>'yoif'
为什么排除了感叹号,因为它还有一个索引号,如下面的代码所示(从上面继续)?
>>> s[13]
>'!'
答案 0 :(得分:0)
因为这就是切片的工作原理。它将选择索引从1开始并以最大12结尾的元素。因此,您看到的唯一元素是索引1,4,7和10. 13是下一步,但因为它高于12所以它不会秀。
答案 1 :(得分:0)
您的问题本身就是答案。您正在从第1位切换到第12位(不包括在内)。所以你将获得第11位的元素。
如果您希望!
将值从12更改为14.请参阅下面的代码。
s = 'Python is fun!'
print(s[1:14:3])
输出:
'yoif!'
答案 2 :(得分:0)
s = 'Python is fun!'
s[1:12]
只返回字符串'ython is fu'
,因此3的步幅无法到达!
在哪里
s[1:14]
将字符串返回'ython is fun!'
。
s[1:14:3]
输出:'yoif!'
@Chris_Rands对问题的评论中的linked:
a[start:end] # items start through end-1
a[start:] # items start through the rest of the array
a[:end] # items from the beginning through end-1
a[:] # a copy of the whole array
a[start:end:step] # start through not past end, by step
答案 3 :(得分:0)
您将1
定义为切片字符串的开头,最后将12
定义为3
作为步骤。这是切片的一般结构:[start:end:step]
1
的开头和12
的结尾,您的字符串如下所示:ython is fu
你必须将你的结局设置在正确的位置。因此s[1:14]
会打印ython is fun!
当您添加3
这样的s[1:14:3]
步骤时,您的代码会根据需要打印yoif!
。
答案 4 :(得分:0)
切片,0索引,形式为[来自:最多但不包括:每个]
要包含最后一个元素,请将其从切片中排除,并将该部分留空。
>>> "Python is fun!"[1::3]
'yoif!'
"Python is fun!"[:]
'Python is fun!'