Python “学习指数”;“用于环路中”;

Python “学习指数”;“用于环路中”;,python,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 这些数字是内部列表的索引。有没有快速的方法可以做到这一点?请注意,您不应该将列表用作变量名,因为它会

我有一个列表,其中包含列表。内部列表可能为空。结构如下:

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

这些数字是内部列表的索引。有没有快速的方法可以做到这一点?

请注意,您不应该将
列表
用作变量名,因为它会
隐藏内置的
列表
类型

>>> 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()
计数以零为基础。您可以将第二个参数指定为start,以匹配基于一个参数的预期输出:

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


2 a
2 b
4 c
5 d

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

请注意,您不应该将
列表
用作变量名,因为它隐藏了内置的
列表
类型

>>> 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
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
您可以看到,
enumerate()
计数以零为基础。您可以将第二个参数指定为start,以匹配基于一个参数的预期输出:

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


2 a
2 b
4 c
5 d
但只有在必要时才这样做,python按惯例计数为0。

这应该可以:

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
for i in range(len(list)):
    for char in list[i]:
        print i+1
        print char
(键入此o.o时出现三个新答案)

这应该可以:

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

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

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

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

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

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

您需要在内部列表项周围加引号,除非它们确实是变量。此外,列表是一个糟糕的名字选择。是的,有引号。我在这里写的时候忘了。你需要在内部列表项周围加引号,除非它们真的是变量。此外,列表是一个糟糕的名字选择。是的,有引号。我在这里写的时候忘记了。这将给出“ValueError:需要多个值才能解包”。您需要使用enumerate,如ch3ka的回答所示,这将给出“ValueError:需要多个值才能解包”。您需要使用enumerate,如ch3ka的答案所示