从长度为2的元组列表中列出第二个元素,而不使用循环:Python
我想为以下问题编写一个简洁而优雅的代码: 假设我有一个元组列表:从长度为2的元组列表中列出第二个元素,而不使用循环:Python,python,Python,我想为以下问题编写一个简洁而优雅的代码: 假设我有一个元组列表: [(x1,y1), (x2,y2), ....., (xn,yn)]. 我想在不使用循环的情况下创建一个列表[y1,y2,…,yn] 感谢您的帮助。您可以这样做: >>> x = [(1,2),(3,4),(5,6)] >>> x2 = [k[1] for k in x] >>> x2 [2, 4, 6] 在内部执行循环,但您不必键入单词for或while。这就是您要寻找的
[(x1,y1), (x2,y2), ....., (xn,yn)].
我想在不使用循环的情况下创建一个列表[y1,y2,…,yn]
感谢您的帮助。您可以这样做:
>>> x = [(1,2),(3,4),(5,6)]
>>> x2 = [k[1] for k in x]
>>> x2
[2, 4, 6]
在内部执行循环,但您不必键入单词for或while。这就是您要寻找的吗?您可以使用zip将序列从N个大小为2的元组压缩到2个大小为N的元组,然后将除第二个结果之外的所有结果切掉:
seq = [("z", "a"), ("y", "b"), ("x", "c")]
print zip(*seq)[1]
结果:
('a', 'b', 'c')
array([2,4,6])
mtrw在标准Python中有正确的想法。然而,如果你想直接跳到numpy,我强烈推荐它。它允许所有类型的索引:
import numpy as np
x = np.array([(1,2),(3,4),(4,5)])
x[:,1]
结果:
('a', 'b', 'c')
array([2,4,6])
编辑:
除了这个简单的索引之外,您还可以像任何列表一样循环数组,并且具有所有相同的属性。
编辑2:vanilla->standard任何能够实现这一点的东西都会在某个地方循环,无论是在python代码中还是在本机代码中。这应该是正确的答案谢谢。这是一个优雅的回答。