Python:如何在列表列表中获取某些内容?

时间:2013-02-25 10:41:20

标签: python list

目前我有以下列表:

>>> a = list()
>>> b = [1, 2, 3]
>>> c = [4,5,6]
>>> d = [7, 8]
>>> a.append(b)
>>> a.append(c)
>>> a.append(d)
>>> del b, c, d
>>> print a
[[1, 2, 3], [4, 5, 6], [7, 8]]
  1. 我想获得b,c和d上的第一项(值1,4和7)。我怎么能在一行代码中做到这一点?
  2. 我想获得b,c和d上的剩余项目(值2,3,5,6和8)。我怎么能在一行代码中做到这一点?

4 个答案:

答案 0 :(得分:2)

>>> zip(*a)[0]
(1, 4)

zip(*a)就像一个转置功能。<​​/ p>

>>> zip(*a)
[(1, 4), (2, 5), (3, 6)]

[0]索引第一个元素。

>>> zip(*a)[0]
(1, 4)

第二个问题比较棘手 - zip无法解决问题。相反,你需要一个列表理解。

>>> [i for l in a for i in l[1:]]
[2, 3, 5, 6, 8]

或者,如果您不需要扁平列表,只需:

>>> [l[1:] for l in a]
[[2, 3], [5, 6], [8]]

答案 1 :(得分:1)

这应该可以解决问题:

[lst[0] for lst in a]

迭代a和每个元素(列表),它收集第一个值。

答案 2 :(得分:1)

有很多方法可以做到这一点。这将是一个:

>>> print [x[0] for x in a]
[1,4]

或者将打印放在for循环中:

>>> for x in a: print x[0],
1 4

如果您只想要前两个子列表的第一个元素,那么这是最基本的方法:

>>> print a[0][0], a[1][0]
1 4

答案 3 :(得分:1)

我会选择niklas B.回答zip(b,c)[0],但是,为了给你更大的灵活性,如果你不知道列表中的子列表数量,你也可以尝试:

[el[0] for el in a]

并为您提供a。

子列表中的所有第一项