我有一个列表,它包含列表。内部列表可能是空的。这是结构:
[[],[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
这些数字是内部列表的索引。有快速的方法吗?
答案 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时出现了三个新答案)