目前我有以下列表:
>>> 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]]
答案 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。
子列表中的所有第一项