我需要写一个表达式而且我完全陷入困境。我有部分代码,我认为我已正确编写,但我坚持其余部分。我需要代码返回一个新列表,其中包含列表中的每个第3个元素,从索引0开始。
例如:如果我有列表[0, 1, 2, 3, 4, 5]
,我需要它返回[0, 3]
我到目前为止的代码是:
result = []
i = 0
while i < len(L):
result.append(L[i])
i =
return result
有人可以帮我弄清楚我需要i =
表达式来使这段代码有效。
答案 0 :(得分:9)
首先,您可以使用扩展切片表示法来简化操作:
In [1]: l = [0, 1, 2, 3, 4, 5]
In [2]: l[::3]
Out[2]: [0, 3]
来自the docs:
某些序列还支持带有第三个“步”参数的“扩展切片”:a [i:j:k]选择索引为x的所有项目,其中x = i + n * k,n> = 0且i&lt; = x&lt;学家
至于您的代码示例,您可能需要i = i + 3
或i += 3
。
答案 1 :(得分:1)
也许试试这个:
result = []
for i in range(0, len(L), 3):
result.append(L[i])
return result
答案 2 :(得分:1)
另一种选择是使用enumerate
。
[j for i, j in enumerate([0, 1, 2, 3, 4, 5]) if i % 3 == 0]
答案 3 :(得分:1)
这将为tyou提供一个可迭代的序列:
import itertools
l = [0, 1, 2, 3, 4, 5]
itertools.islice(l, 0, None, 3)
将其转换为列表,使用list()函数。
impiort itertools
def get_sublist(l):
return list(itertools.islice(l, 0, None, 3))
答案 4 :(得分:0)
python 3.2
one way:
>>> [i for i in range(0,len(L),3)]
[0,3]
your method:
result = []
i = 0
while i <= len(L):
result.append(L[i])
i+=3
return result