【发布时间】:2013-06-12 08:02:29
【问题描述】:
假设我有一个名为 everythird 的函数,它接受一个列表作为其参数,并返回一个新列表,其中包含原始列表的每个第三个元素,从索引 0 开始。 我知道如何使用切片表示法(返回 everythird[0::3])来做到这一点,但我们只能使用 while 循环。如果我输入 everythird([1, 2, 3, 4, 5, 6, 7, 8]),我希望它返回 [1, 4, 7]。我尝试了几种不同的方法,但我没有得到一个列表,或者我只得到一个值。如何返回列表?另外,您如何确定某些内容是否修改了原始列表?
谢谢。
这是我尝试的方法之一: every_third([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
def everythird(l):
'''(list) -> list
Returns every third element of original list, starting at index 0'''
i = 0
while i < len(l):
print(l[i])
i += 3
这会打印出来
1
4
7
【问题讨论】:
-
你根本没有任何
return声明。 -
只是
yield l[i]而不是print;调用者函数可以使用list()获取列表 -
@mshsayem:这将返回一个迭代器,而不是一个列表。这是一个很好的方法,但我不确定这是 OP 想要的。
标签: python list python-3.x while-loop