递归遍历列表中的所有其他元素

时间:2018-11-12 12:15:20

标签: python python-3.x python-2.7 list recursion

我一直在试图找到一种清晰简洁的方法,以递归循环的形式遍历列表中的元素。

例如,如果我有一个列表:

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

我可以使用哪些方法在列表中循环?

3 个答案:

答案 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]