for循环在“列表的第一个元素”范围内

时间:2014-02-04 12:31:56

标签: python list for-loop

我有一个列表,其结构如下:

a = [[1,'a'], [2,'b'], [3,'c']]

我想在每个子列表中创建第一个元素的范围而不进行第二个for循环。我在考虑这样的事情:

for i in a[][0]:
    print i

但是,上面的最后一个代码不起作用(SyntaxError: invalid syntax)。有没有想过是否可以在Python中执行此操作?

编辑:

我想通过上述循环获得的输出是:

1
2
3

而不是

1
a

5 个答案:

答案 0 :(得分:4)

for sublist in a:
    print sublist[0]

要构建第一项的列表,请使用列表推导:

first_items = [sublist[0] for sublist in a]

答案 1 :(得分:1)

for i,_ in a:
    print i

应该做的伎俩

答案 2 :(得分:1)

对于这样一个简单的例子来说,这可能有点过头了,但对于多样性:

for i in map(operator.itemgetter(0), a):
    print i

在Python 2 map中构建了第一个元素的完整列表。您可以使用itertools.imap来避免这种情况。当然对于3个元素无论如何都无关紧要。

我之所以提到这一点,是因为它比for i, _ in a更灵活(每个子列表中不需要精确的两个元素),它会为您提供所需的i而不是for i in a并使用i[0](可能在一个不太简单的例子中多次)。但当然,您可以轻松获得所需的i

for l in a:
    i = l[0]
    print i

...并非所有都需要在循环标题中完成,它可以可以是: - )

答案 3 :(得分:1)

>>> a = [[1,'a'], [2,'b'], [3,'c']]
>>> for i in a:
...     print i[0]
... 
1
2
3

我认为这种方法与您尝试的方法很接近。

答案 4 :(得分:0)

>>> a = [[1,'a'], [2,'b'], [3,'c']]
>>> for [x,y] in a:
...     print(x)
... 
1
2
3

但是,如果你的名单大小不一致,那么@ warwaruk的回答会更好。