嵌套循环Python

嵌套循环Python,python,loops,data-structures,nested,Python,Loops,Data Structures,Nested,我想打印出一列文本,我正在尝试通过for循环来完成这项工作。我试着用这个: a = 0 while a<58: for x in Char[a],Numb[a]: print (x) a+=2 您可以使用和for循环: >>> import string >>> for i,j in enumerate(string.ascii_uppercase,1) : ... print j,'\t',i #in pytho

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

a = 0
while a<58:
    for x in Char[a],Numb[a]:
        print (x)
    a+=2
您可以使用和
for
循环:

>>> 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

假设您的两个列表有如下数据,那么下面的代码将实现这一技巧

# 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  
一些评论:

  • 将while循环重写为for循环更好,并且不太可能得到无限循环
  • 解包元组/列表很好(例如
    a,b=(1,2)
  • 看一看,尤其是这个。或者只需使用
    \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}
    这样的格式化选项意味着:

    • :右对齐(您不需要它。您也可以使用
      
      
      >>> 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
      
      # 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  
      
      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))
      
      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