2016-02-23 31 views
1

我写了一个示例代码。我想将我的列表[1,2,3,4]更改为[2,3,4,1],[3,4,2,1]和[4,3,2,1]

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,所以

在我的代码中,我只能打印出第二个。为什么我的代码不给我整个输出?

+2

它不完全清楚你想达到什么。它只是改变名单?请显示预期产量和实际产量。 – flaschbier

回答

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的卵巢变量,并把另一个循环内得到的所有4种可能性。

+0

非常感谢。它的工作 –

+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

假设你不想简单地旋转,但遵循的模式在您的标题,那么这将是更容易保持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')] 
相关问题