Python 创建偏移量列表
我希望python生成一个列表Python 创建偏移量列表,python,list,python-3.x,Python,List,Python 3.x,我希望python生成一个列表[[['a',B',C']],然后附加另一个列表,使其成为[['a',B',C'],['B',C',a'],并继续,直到完成为止。我使用python已经有一段时间了,但似乎找不到一种方法来实现这一点。 任何帮助都很好 我尝试了的循环: x = list("ABCDEFGHIJ...") for i in range(0,55): for j in range(0,55): y = (j+55) - (i+55) list[i]
[[['a',B',C']]
,然后附加另一个列表,使其成为[['a',B',C'],['B',C',a']
,并继续,直到完成为止。我使用python已经有一段时间了,但似乎找不到一种方法来实现这一点。
任何帮助都很好
我尝试了的循环:
x = list("ABCDEFGHIJ...")
for i in range(0,55):
for j in range(0,55):
y = (j+55) - (i+55)
list[i][j] = x[y]
是的,谢谢你的帮助。你可能在deque
>>> from collections import deque
>>> d = deque('ABC')
>>> d
deque(['A', 'B', 'C'])
>>> d.rotate(-1)
>>> d
deque(['B', 'C', 'A'])
如果您只是尝试附加一个旋转列表,以下是如何添加:
>>> x=[]
>>> x.append(list('ABC'))
>>> x
[['A', 'B', 'C']]
>>> x.append(x[-1][1:]+x[-1][:1])
>>> x
[['A', 'B', 'C'], ['B', 'C', 'A']]
您可以继续:
>>> x.append(x[-1][1:]+x[-1][:1])
>>> x
[['A', 'B', 'C'], ['B', 'C', 'A'], ['C', 'A', 'B']]
当你说“继续直到完成”时,你的意思可能是这样的:
x=[list('ABCD')]
def rotate(l,n):
return l[n:] + l[:n]
while True:
rl=rotate(x[-1], 1)
if len(x)>1 and x[0]==rl:
break
else:
x.append(rl)
print x
# [['A', 'B', 'C', 'D'], ['B', 'C', 'D', 'A'], ['C', 'D', 'A', 'B'], ['D', 'A', 'B', 'C']]
我不知道你想完成什么。您是否正在尝试获取列表('abc')
的所有排列?如果是这样的话,itertools.permutations
就是你的朋友。我想他是把原始列表当作戒指看待。@2rs2ts啊哈!你可能是对的:)如果是的话,g.d.d.c.的答案是完美的。你应该总是说出你到底有什么问题。实际上,您的代码无法运行,因为您正在为“list”的索引分配一个值,这是一种类型。另一个提示:您必须首先构建空网格,因为您不能分配超出范围的索引。你的第四行可以简化…背上这个答案:为了得到想要的结果(“ABC”的旋转列表),你可以这样做:x=“ABC”;L=[x];d=德克(x);对于范围内的y(透镜(x)-1):d.旋转(-1);L.追加(列表(d))