Python:如何从列表中获取某些内容?
目前我有以下清单:Python:如何从列表中获取某些内容?,python,list,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,
>>> 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]]
这应该可以做到:
[lst[0] for lst in a]
它在a上迭代,并为每个元素(即列表)收集第一个值。这应该可以做到:
[lst[0] for lst in 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
有很多方法可以做到这一点。这将是一个:
>>> 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
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]]
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]]
我会选择niklas B。回答
zip(B,c)[0]
,但是,为了给您更多的灵活性,如果您不知道列表中的子列表数量,您也可以尝试:
[el[0] for el in a]
并为您提供a子列表中的所有第一项。我选择niklas B。回答
zip(B,c)[0]
,但是,为了给您更多的灵活性,如果您不知道列表中的子列表数量,您也可以尝试:
[el[0] for el in a]
并为您提供a.的子列表中的所有第一项。类似于
zip(b,c)[0]
或zip(*a)[0]
?zip工作完美。谢谢,第二个怎么样?感谢您介绍[1]
zip(*a)
基本上提供了转置矩阵,因此您可以为其下标或在列上迭代,或者类似于zip(b,c)[0]
或zip(*a)[0]
?zip工作完美无瑕。谢谢,第二个怎么样?感谢您介绍[1]
zip(*a)
基本上提供了转置矩阵,因此您可以为它下标或迭代列或其他基本上是zip(*a)[0]
,只生成一个列表而不是一个基本上是zip(*a)[0]
,只生成一个列表而不是一个元组,但是第二个呢?我试过zip(*a)[1:],但它不起作用。谢谢谢谢,我认为列表是解决方案,但是第二个呢?我试过zip(*a)[1:],但它不起作用。谢谢谢谢,我认为列表是解决办法