我一直在试图找到一种清晰简洁的方法,以递归循环的形式遍历列表中的元素。
例如,如果我有一个列表:
My_list = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
我想从列表中提取所有其他元素。
New_list = [2, 6, 10, 14, 18]
然后我要取舍弃的值并取其中的每一秒。依此类推,递归地进行。
自从我第一次遍历列表后,到18点结束,由于要提取所有其他元素,因此我将跳过20个并返回列表的开头。
My_list = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# Elements not been used after first operation = [4, 8, 12, 16, 20]
New_list = [2, 6, 10, 14, 18, 4, 12, 20, 8, 16] # desired output
我可以使用哪些方法在列表中循环?
答案 0 :(得分:2)
您可以使用python非常酷的切片语法:
new_list=my_list[::2]
获取其他所有元素。
这意味着new_list
从头到尾都是my_list
,步幅为2
那么您的主要元素是elements_not_used = [item for item in my_list if item not in new_list]
,您可以继续操作直到len(my_list)<2
答案 1 :(得分:1)
使用while循环,您可以这样做:
final=[]
while len(mylist)>0:
final.extend(mylist[::2])
mylist=mylist[1::2]
print(final)
答案 2 :(得分:0)
是的,您可以将while
循环与生成器一起使用:
L = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
def recursive_odds(x):
while x:
yield from x[::2]
x = x[1::2]
res = list(recursive_odds(L))
[2, 6, 10, 14, 18, 4, 12, 20, 8, 16]