嵌套循环Python



我想打印出文本列,我正试图通过for循环来完成这项工作。我试过使用这个:

a = 0
while a<58:
    for x in Char[a],Numb[a]:
        print (x)
    a+=2

但这会在不同的行上打印出两个值。有什么方法可以打印出来吗

A  1
B  2
C  3
D  4
E  5   ...etc
a = 0
while a<58:
    print Char[a], Numb[a]
    a+=2

或者,如果你愿意,你可以添加一些格式使其固定宽度:

a = 0
while a<58:
    print '{0:3} {1}'.format(Char[a], Numb[a])
    a+=2

也许更干净一点:

for a in xrange(0,58,2):
    print '{0:3} {1}'.format(Char[a], Numb[a])

您可以使用enumeratefor循环:

>>> import string
>>> for i,j in enumerate(string.ascii_uppercase,1) :
...    print j,'t',i #in python 3 print (j,'t',i)
... 
A   1
B   2
C   3
D   4
E   5
F   6
G   7
H   8
I   9
J   10
K   11
L   12
M   13
N   14
O   15
P   16
Q   17
R   18
S   19
T   20
U   21
V   22
W   23
X   24
Y   25
Z   26

一些备注:

  1. 将while循环重写为for循环更好,并且不太可能得到无限循环
  2. zip
  3. 拆包元组/列表很好(例如a, b = (1, 2)
  4. 看看Python中的字符串格式,尤其是columns部分。或者简单地使用t(制表符的ASCII符号)

作为代码,它看起来像这样:

import string
chars = string.ascii_uppercase
digits = string.digits
for a in range(0, min(len(chars), len(digits)), 2):
    for char, digit in zip(chars[a], digits[a]):
        print("{0:>3} {1:>3}".format(char, digit))

{i:>n}这样的格式选项意味着:

  • >:右对齐(你不需要。你也可以不带<
  • i:元组的第i个元素
  • n:共n列。这也是没有必要的

我通常会做这样的东西:

import string
chars = string.ascii_uppercase
digits = string.digits
headers = ["chars", "digits"]
sizes = [(len(el) + 2) for el in headers]
formatter = "{0:>" + str(sizes[0]) + "} {1:>" + str(sizes[1]) + "}"
print(formatter.format(*headers))
print("-"*(sum(sizes) + len(sizes)))
for a in range(0, min(len(chars), len(digits)), 2):
    for char, digit in zip(chars[a], digits[a]):
        print(formatter.format(char, digit))

它给出

  chars   digits
-----------------
      A        0
      C        2
      E        4
      G        6
      I        8

假设您的两个列表具有如下数据,那么下面的代码将完成

# for python3
Char=['A', 'B', 'C', 'D', 'E']    # these lists can have as many elements as you want
Numb=[1,2,3,4,5]
for x,y in zip(Char, Numb):       #zip stops when the shorter list ends
  print (x +" "+ str(y) )

输出

sh-4.2# python3 main.py                                                                                                                                                         
A 1                                                                                                                                                                             
B 2                                                                                                                                                                             
C 3                                                                                                                                                                             
D 4                                                                                                                                                                             
E 5  

最新更新