繁体   English   中英

Python:如何获取列表列表中的内容?

[英]Python: How can I obtain something in a list of 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)。 如何用一行代码来做到这一点?
>>> zip(*a)[0]
(1, 4)

zip(*a)就像一个转置函数。

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

这应该可以解决问题:

[lst[0] for lst in a]

遍历a,并为每个元素(列表)收集第一个值。

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

>>> 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

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

[el[0] for el in a]

并为您提供a的子列表中的所有第一项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM