返回包含另一个列表元素的列表

时间:2012-11-18 10:58:51

标签: python list

我需要写一个表达式而且我完全陷入困境。我有部分代码,我认为我已正确编写,但我坚持其余部分。我需要代码返回一个新列表,其中包含列表中的每个第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 =表达式来使这段代码有效。

5 个答案:

答案 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 + 3i += 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