迭代通过在Python

问题描述:

交错数组值和指数

比方说,ARR是jugged阵列像这样(名单列表中,如果你想):迭代通过在Python

arr = [[10], [12, 3], [33, 22, 2], [2], ...] 

无论是每行知的大小,也列出的数。

如何动态显示获取行大小的索引和值?如何迭代以打印该arr [2] [0] = 33例如?

首先尝试:

for value in arr:               
     i = 0                 
     j = 0                 
     if isinstance(value, list):            
      for other in value:             
       print("a[%s][%s] = %s" % (i, j, other))       

       i += 1               
       j += 1 

每一个新行开始与指数[0] [0]。值12应为[1] [0]

a[0][0] = 10 
a[0][0] = 12 
a[1][1] = 3 
... 

第二次尝试。第一行是关闭的1值10应具有索引[0] [0]

i = 0                    
for value in arr1:                 
    i += 1                   
    for j in range(0, len(value)):            
     print("a[%s][%s] = %s" % (i, j, value[j])) 

结果:

a[1][0] = 10 
a[2][0] = 12 
a[2][1] = 3 

使用enumerate

jagged = [[1], [2, 3], [4, 5, 6]] 

for i, sub_list in enumerate(jagged): 
    for j, value in enumerate(sub_list): 
     print 'a[{}][{}] = {}'.format(i, j, value) 


# a[0][0] = 1 
# a[1][0] = 2 
# a[1][1] = 3 
# a[2][0] = 4 
# a[2][1] = 5 
# a[2][2] = 6 

第一个代码段失败,因为你在每一个外部循环复位i

for value in arr:               
     i = 0 # reset the counter? 
     j = 0                 
     if isinstance(value, list):            
      for other in value:             
       print("a[%s][%s] = %s" % (i, j, other))       

       i += 1 # increment in the inner loop? 
       j += 1

第二代码片段失败因为你增量太早

i = 0                    
for value in arr1:                 
    i += 1 # increment *before* the inner loop? 
    for j in range(0, len(value)):            
     print("a[%s][%s] = %s" % (i, j, value[j]))

然而可以简单地使用enumerate(..)和方便起见:

for i,value in enumerate(arr1): 
    for j,item in enumerate(value): 
     print("a[%s][%s] = %s" % (i, j, item))

enumerate(..)作为输入的迭代并生成包含该索引(作为元组的第一项)和所述元件的元组。因此它生成元组(0,1),(1,'a'),(2,2)(3,5.0)

+0

是的,指数增量不适合这种情况 – Bor