1

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

[[],[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

4 回答 4

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 开始计数。

于 2012-04-30T21:41:24.420 回答
2

要获得准确的输出,一种方法是直接写入 sys.stdout。打印命令(在 2.x 中)最多只能在每个索引 + 字符之间留下空格。

import sys
for ndx, inner in enumerate([[],['a','b'],[],['c'],['d']], 1):
    for char in inner:
        sys.stdout.write('%d%s' % (ndx, char))
于 2012-04-30T21:46:34.883 回答
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
于 2012-04-30T21:41:36.323 回答
1

这应该有效:

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

(键入此 oO 时出现三个新答案)

于 2012-04-30T21:44:01.343 回答