创建一个偏移列表python

时间:2014-04-14 16:23:09

标签: python list python-3.x

我希望python生成一个列表[['A', 'B', 'C']],然后添加另一个列表,使其成为[['A', 'B', 'C'], ['B', 'C', 'A']]并继续直到它完成。我已经在python上工作了一段时间,但似乎无法找到一种方法来做到这一点。 任何帮助都会很好。

我尝试了for循环:

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]

所以是的,谢谢你的帮助。

2 个答案:

答案 0 :(得分:5)

您可能正在寻找deque

中的功能
>>> from collections import deque
>>> d = deque('ABC')
>>> d
deque(['A', 'B', 'C'])
>>> d.rotate(-1)
>>> d
deque(['B', 'C', 'A'])

答案 1 :(得分:0)

如果您只是想附加一个旋转列表,请按以下步骤操作:

>>> 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']]