How to cycle list in python?
本问题已经有最佳答案,请猛点这里访问。
假设我从下面的列表
用
1 2 3 4 | lst = ['a','b','c'] n_lst = [lst[x:] + lst[:x] for x in range(len(lst))] print(n_lst) |
产量
1 | [['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a', 'b']] |
号
对所有的突变都是特别的
1 2 | import itertools list(itertools.permutations(lst)) |
产量
1 2 3 4 5 6 7 8 | [ ('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a') ] |
。
我还检查了执行
1 2 3 4 5 6 7 | lst = list(range(10000)) # list comprehension time 1.923051118850708 # rotate from collections.deque time 1.6390318870544434 |
旋转更快
采用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from collections import deque A = deque(['a', 'b', 'c']) res = [] for i in range(len(A)): A.rotate() res.append(list(A)) print(res) [['c', 'a', 'b'], ['b', 'c', 'a'], ['a', 'b', 'c']] |
。