学习索引的“for-in循环”

时间:2012-04-30 21:37:39

标签: python

我有一个列表,它包含列表。内部列表可能是空的。这是结构:

[[],[a,b],[],[c],[d]]

我的代码:

for inner in list:
   for char in inner:
      print char           # I want to add indexes of inner lists here

输出是:

abcd

我希望输出为:

2a2b4c5d

这些数字是内部列表的索引。有快速的方法吗?

4 个答案:

答案 0 :(得分:8)

请注意,您不应将list用作变量名称,因为它shadows是内置的list类型。

>>> lst = [[],['a','b'],[],['c'],['d']]
>>> for idx, inner in enumerate(lst):
      for char in inner:
        print idx, char


1 a
1 b
3 c
4 d

您看到enumerate()从零开始计算。您可以指定第二个参数作为开始,以匹配基于一个的预期输出:

>>> for idx, inner in enumerate(lst, 1):
    for char in inner:
        print idx, char


2 a
2 b
4 c
5 d

但只有在必要时才这样做,python按惯例计算为0。

答案 1 :(得分:2)

要获得确切的输出,一种方法是直接写入sys.stdout。 print命令(在2.x中)最多会在每个索引+ char之间留下空格。

import sys
for ndx, inner in enumerate([[],['a','b'],[],['c'],['d']], 1):
    for char in inner:
        sys.stdout.write('%d%s' % (ndx, char))

答案 2 :(得分:1)

for i, inner in enumerate(myList):  # just add an index variable here
    for char in inner:
        print i          # and use it wherever you need to
        print char

答案 3 :(得分:1)

这应该有效:

for i in range(len(list)):
    for char in list[i]:
        print i+1
        print char

(键入此o.O时出现了三个新答案)