【发布时间】:2023-03-05 11:58:01
【问题描述】:
我有一个这样的列表-
[(1, 3),(2, 2)]
我喜欢把它转换成-
[1,2]
我正在做的是-
c = [(1, 3),(2, 2)]
output = []
for a,b in c:
output.append(a)
return output
有没有办法在 1 行中做到这一点?
【问题讨论】:
标签: python python-3.x coding-style
我有一个这样的列表-
[(1, 3),(2, 2)]
我喜欢把它转换成-
[1,2]
我正在做的是-
c = [(1, 3),(2, 2)]
output = []
for a,b in c:
output.append(a)
return output
有没有办法在 1 行中做到这一点?
【问题讨论】:
标签: python python-3.x coding-style
您可以使用list-comprehension
output = [a for a,_ in c]
这里的_,对应于问题中使用的b,是虚拟变量的常规名称。
【讨论】:
使用列表推导并从每个元组中获取第一个元素:
c = [(1, 3),(2, 2)]
print([i[0] for i in c])
输出:
[1, 2]
【讨论】:
另一种方法是:
[x[0] for x in c]
【讨论】:
使用 zip() 函数。
b = [*list(zip(*a))[0]]
【讨论】:
timeit,我发现 zip 方法对于大小为 1000000 的列表大约需要 3 倍,对于大小为 10 的列表大约需要 2 倍。