我知道我可以使用字符串[3:4]之类的东西在Python中获取子字符串,但3在某些序列[::3]中是什么意思?


当前回答

Seq [::n]是整个序列中第n个元素的序列。

例子:

>>> range(10)[::2]
[0, 2, 4, 6, 8]

语法为:

seq[start:end:step]

所以你可以这样做(在Python 2中):

>>> range(100)[5:18:2]
[5, 7, 9, 11, 13, 15, 17]

其他回答

是我漏了还是没人提到用[::-1]来反转?

# Operating System List
systems = ['Windows', 'macOS', 'Linux']
print('Original List:', systems)

# Reversing a list  
#Syntax: reversed_list = systems[start:stop:step] 
reversed_list = systems[::-1]

# updated list
print('Updated List:', reversed_list)

来源: https://www.programiz.com/python-programming/methods/list/reverse

Python序列片地址可以写成[start:end:step], start、stop或end中的任何一个都可以省略。A[::3]是序列的每三个元素。

记住基础就是[开始:结束:步骤]的意思。从这里你可以得到一个[1::2]得到每个奇数索引,一个[::2]得到每个偶数索引,一个[2::2]得到每个偶数索引,一个[2:4:2]得到每个偶数索引,从2开始,以4结束。灵感来自https://stackoverflow.com/a/3453102/1601580

它的意思是“第一个参数什么都没有,第二个参数什么都没有,然后跳转到3”。它对序列中的每三项进行切片。 加长的切片就是你想要的。Python 2.3新增功能

第三个参数是步骤。因此[::3]将返回列表/字符串的每3个元素。