python - 如何在python中循环列表?

标签 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/

相关文章:

python - Pandas:如何根据特定行值将值应用于一组行?

python - 如何使用 statsmodels Holt-Winters 预测时间序列集

python - 如何让圆圈的运动更加流畅?

python - 一次生成100个数字并把它做成一个列表并添加到一个空列表中

python - 使用 python 脚本获取 Instagram 粉丝列表

python - 如何在Python中将JSON字符串保存为CSV或TXT?

python - 如何对方法对象中的方法进行单元测试?

python - scikit-learn randomforest 中令人困惑的概率

python - qtreeview上几个元素的选择及其处理

python:按名称分配属性值