<分区>
假设我从下面的列表 [a,b,c]
开始,我想从这个列表中创建下面的列表 [[a,b,c], [ c,a,b], [b,c,a]]
其中包含原始列表的所有循环。我怎样才能以最有效的方式做到这一点?
标签 python python-3.x
<分区>
假设我从下面的列表 [a,b,c]
开始,我想从这个列表中创建下面的列表 [[a,b,c], [ c,a,b], [b,c,a]]
其中包含原始列表的所有循环。我怎样才能以最有效的方式做到这一点?
最佳答案
使用 list comprehension
或者您想要一些特别的东西?
lst = ['a','b','c']
n_lst = [lst[x:] + lst[:x] for x in range(len(lst))]
print(n_lst)
输出
[['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a', 'b']]
所有排列的特殊之处
import itertools
list(itertools.permutations(lst))
输出
[
('a', 'b', 'c'),
('a', 'c', 'b'),
('b', 'a', 'c'),
('b', 'c', 'a'),
('c', 'a', 'b'),
('c', 'b', 'a')
]
我还检查了 list comprehension
和来自 @jpp 的 collections.deque
对象的内置函数 rotate
的执行时间回答。
lst = list(range(10000))
# list comprehension time
1.923051118850708
# rotate from collections.deque time
1.6390318870544434
rotate更快
关于python - 如何在python中循环列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50783519/