我写了一个示例代码。
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)
第一个关键是标志,然后是它的主。
如果白羊座上升,房屋和领主的顺序如下 列表。 如果tarus是asc,那么第一个将是tarus而最后一个将是aries,所以
在我的代码中,我只能打印出第二个。为什么我的代码没有给我整个输出?
答案 0 :(得分:1)
从您想要旋转列表内容的数字中显示。也就是说,每次你想说
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)
到最后,行星已经返回第一个值并打印了所有四个值。
[('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')]
答案 1 :(得分:1)
假设您不想简单地旋转但是遵循标题中的模式,那么维护2个列表(并且为了提高效率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')]
答案 2 :(得分:0)
使用您的方法:
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种可能性。