Обратный цикл внутри цикла с тем же списком - PullRequest
2 голосов
/ 19 января 2010
num = list(str(1234567))

for n1 in num:
    print n1
    for n2 in reversed(num):
        print '\t', n2

На каждой итерации печатается первая цифра из первого цикла и все 7 из обратного цикла. Как я могу напечатать не все цифры, а только последнюю (т.е. первую) цифру из обратной петли?

Спасибо

Ответы [ 5 ]

7 голосов
/ 19 января 2010

Самый простой способ - просто сжать прямой и обратный списки вместе:

for n1, n2 in izip(num, reversed(num)):
    print n1, '\t', n2
1 голос
/ 19 января 2010

Вы имеете в виду, как это?

num = list(str(1234567))
for i in range(len(num)):
    print num[i], '\t', num[-(i+1)]

Вывод:

1       7                       
2       6                       
3       5                       
4       4                       
5       3                       
6       2                       
7       1  
1 голос
/ 19 января 2010

Вот слабая попытка. Это то, что вы ищете?

 for idx,i in enumerate(x):
     print i,"\t",x[-(idx+1)]
0 голосов
/ 19 января 2010

Ничего общего с Python, но здесь он есть в Haskell:)

myDie  = [1,2,3,4,5,6]
sevens = [ (x,y) | x <- myDie, y <- myDie, x+y == 7]
0 голосов
/ 19 января 2010

Вы должны составить второй список:

>>> num_rev = num[:]
>>> num_rev.reverse()
>>> num_rev
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Затем сделайте что-то вроде:

>>> for n1,n2 in zip(num,num_rev): 
...     print n1, n2
... 
0 9
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
9 0
...