如何自动进行变量?

时间:2013-12-16 18:58:18

标签: python

我有一系列带有数字的数组,如下所示:

array1 = [8,2,22,97,38,15,0,40,0,75,4,5,7,78,52,12,50,77,91,8]
array2 = [49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,4,56,62,0]
array3 = [81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,3,49,13,36,65]
array4 = [52,70,95,23,4,60,11,42,69,24,68,56,1,32,56,71,37,2,36,91]
array5 = [22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80]
array6 = [24,47,32,60,99,3,45,2,44,75,33,53,78,36,84,20,35,17,12,50]
array7 = [32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70]
array8 = [67,26,20,68,2,62,12,20,95,63,94,39,63,8,40,91,66,49,94,21]
array9 = [24,55,58,5,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72]
array10 = [21,36,23,9,75,0,76,44,20,45,35,14,0,61,33,97,34,31,33,95]
array11 = [78,17,53,28,22,75,31,67,15,94,3,80,4,62,16,14,9,53,56,92]
array12 = [16,39,5,42,96,35,31,47,55,58,88,24,0,17,54,24,36,29,85,57]
array13 = [86,56,0,48,35,71,89,7,5,44,44,37,44,60,21,58,51,54,17,58]
array14 = [19,80,81,68,5,94,47,69,28,73,92,13,86,52,17,77,4,89,55,40]
array15 = [4,52,8,83,97,35,99,16,7,97,57,32,16,26,26,79,33,27,98,66]
array16 = [88,36,68,87,57,62,20,72,3,46,33,67,46,55,12,32,63,93,53,69]
array17 = [4,42,16,73,38,25,39,11,24,94,72,18,8,46,29,32,40,62,76,36]
array18 = [20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,4,36,16]
array19 = [20,73,35,29,78,31,90,1,74,31,49,71,48,86,81,16,23,57,5,54]
array20 = [1,70,54,71,83,51,54,69,16,92,33,48,61,43,52,1,89,19,67,48]

我希望能够在一个数组中打印每个数字,然后向下移动到下一个数组,然后从那里继续,只需一小段代码。

我能这样做吗?也许与阵列和类似的东西是[i],还是这不可能?

5 个答案:

答案 0 :(得分:4)

您遇到困难的事实表明您没有选择正确的数据结构。您需要使用容器来保存列表,可以是嵌套列表结构,也可以是更好的字典。我不会破解基于变量名的方法。

使用列表:

container = [[8,2,22,97,38,15,0,40,0,75,4,5,7,78,52,12,50,77,91,8],
             [49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,4,56,62,0],
             [81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,3,49,13,36,65],
             ...
            ]

然后迭代容器和每个数组:

for array in container:
   for item in array:
       # do something

或使用字典:

container = { 1 : [8,2,22,97,38,15,0,40,0,75,4,5,7,78,52,12,50,77,91,8],
              2 : [49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,4,56,62,0],
              3 : [81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,3,49,13,36,65],
              ... 
            }

然后遍历键和每个数组:

for key in sorted(container.keys()):
    for item in container[key]:
        # do something

答案 1 :(得分:1)

试一试:

my_lists = [array1, array2, array3, array4, array5, array6, array7, array8, array9, array10, array11, array12, array13, array14, array15, array16, array17, array18, array19, array20]
for l in my_lists:
    for n in l:
        print n

答案 2 :(得分:-3)

您还可以使用locals()方法,该方法可让您按名称访问所有变量

for i in range(20):
  now = locals()[ 'array' + str(i+1) ]
  for x in now:
    print x

答案 3 :(得分:-3)

我想你想把所有数组合二为一。在这种情况下,您可以使用eval来计算python代码的字符串

BigArray = []
for k in range(1, 21): 
    BigArray = eval('BigArray + array%d'%k)
print BigArray

答案 4 :(得分:-3)

arrays = [eval("array"+str(x)) for x in range(1,21)]
for array in arrays:
    print array# this is the entire list at a time or
    for number in array:
        print number # this is each individual number

但无论哪种方式,它都涉及将所有内容整合到一个列表中,

arrays = [eval("array"+str(x)) for x in range(1,21)]是一个花式列表理解/ eval,它列出了所有编号的数组