Python 我想将列表[1,2,3,4]的顺序更改为[2,3,4,1]、[3,4,2,1]和[4,3,2,1]

Python 我想将列表[1,2,3,4]的顺序更改为[2,3,4,1]、[3,4,2,1]和[4,3,2,1],python,Python,我已经编写了一个示例代码 planets=[('aries','mars'),('tarus','venus'),('gemini','mercury'), ('cancer','moon')] print(planets) asc=[ ] for i in range(0,len(planets)): asc.append(planets[(i+1)%(len(planets))]) print(asc) 第一把钥匙是符号,后面跟着它的主人 如果白羊

我已经编写了一个示例代码

planets=[('aries','mars'),('tarus','venus'),('gemini','mercury'),  ('cancer','moon')]
print(planets)    
asc=[ ]    
for i in range(0,len(planets)):
   asc.append(planets[(i+1)%(len(planets))])        
print(asc) 
第一把钥匙是符号,后面跟着它的主人

如果白羊座是上升星座,那么上议院和上议院的顺序是一致的 名单。 如果塔鲁斯是asc,那么第一个将是塔鲁斯,最后一个将是白羊座等等

在我的代码中,我只能打印第二个。为什么我的代码没有给出全部输出?

使用您的方法:

planets=[('aries','mars'),('tarus','venus'),('gemini','mercury'),  ('cancer','moon')]
print(planets)
temp = planets
for j in range(len(planets)-1):
    asc = []
    for i in range(len(planets)):
        asc.append(temp[(i+1)%(len(planets))])
    temp = asc
    print(asc)

您只需将新创建的列表保存在一个
temp
orary变量中,并将其放入另一个循环中,即可获得所有4种可能性。

从数字中可以看出,您希望旋转列表内容。也就是说,每次你想说

def rotate(planets):
    temp = planets[0]
    n = len(planets)
    for i in range(1, n):
        planets[i-1] = planets[i]
    planets[-1] = temp
    return planets
这是一次。要每次执行此操作,请调用正确的旋转次数

planets=[('aries','mars'),('tarus','venus'),('gemini','mercury'), ('cancer','moon')]
for j in range(len(planets)):
    print planets
    planets = rotate(planets)
最后,planets返回到第一个值,并打印了所有四个值

[('aries', 'mars'), ('taurus', 'venus'), ('gemini', 'mercury'), ('cancer', 'moon')]
[('taurus', 'venus'), ('gemini', 'mercury'), ('cancer', 'moon'), ('aries', 'mars')]
[('gemini', 'mercury'), ('cancer', 'moon'), ('aries', 'mars'), ('taurus', 'venus')]
[('cancer', 'moon'), ('aries', 'mars'), ('taurus', 'venus'), ('gemini', 'mercury')]

假设您不想简单地旋转,而是遵循标题中的模式,那么维护两个列表(并且为了高效使用
collectiones.deque
),从一个列表的左侧弹出,然后推到另一个列表的左侧会更容易,例如:

import itertools as it
from collections import deque
a1 = deque(planets)
a2 = deque()

for i in range(len(planets)):
    print(list(it.chain(a1,a2)))
    a2.appendleft(a1.popleft())
输出([1,2,3,4]、[2,3,4,1]、[3,4,2,1]和[4,3,2,1]):


你想要达到的目标并不十分明确。这仅仅是改变名单吗?请显示预期输出和实际输出。非常感谢。它工作正常:)。。。如果一个答案对你有用,请考虑接受它(点击复选标记使其变绿)。
[('aries', 'mars'), ('tarus', 'venus'), ('gemini', 'mercury'), ('cancer', 'moon')]
[('tarus', 'venus'), ('gemini', 'mercury'), ('cancer', 'moon'), ('aries', 'mars')]
[('gemini', 'mercury'), ('cancer', 'moon'), ('tarus', 'venus'), ('aries', 'mars')]
[('cancer', 'moon'), ('gemini', 'mercury'), ('tarus', 'venus'), ('aries', 'mars')]