说我有一个清单
Q = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
Run Code Online (Sandbox Code Playgroud)
我相信我可以使用扩展切片符号提取第一个和每第九个值:
Q[::9]
Run Code Online (Sandbox Code Playgroud)
这应该给出:
[0,9,18]
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能类似地选择除这些之外的所有元素呢?
你是这个意思?
>>> lis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
>>> lis[1::9]
[1, 10]
Run Code Online (Sandbox Code Playgroud)
扩展切片符号:
lis[start : stop : step] #default values : start = 0, stop = len(lis), step = 1
Run Code Online (Sandbox Code Playgroud)
您可以传递自己的值start(默认使用 0)
更新:
>>> lis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
>>> se = set(range(0, len(lis),9)) #use a list if the lis is not huge.
>>> [x for i,x in enumerate(lis) if i not in se]
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17]
#for your example even this will work:
>>> [x for i,x in enumerate(lis) if i%9 != 0]
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17]
Run Code Online (Sandbox Code Playgroud)