gpt4 book ai didi

python - 大多数 pythonic3 dezip(?) 实现

转载 作者:行者123 更新时间:2023-12-01 04:01:06 27 4
gpt4 key购买 nike

(“dezip”显然是一个坏名字,但我不确定正确的名字是什么。如果这意味着我因不知道要搜索什么而错过了权威答案,请原谅我。)

假设我们有

people = [
(1, 'anne'),
(2, 'ben'),
(3, 'charlie'),
]

(在 django 中常见,用于选择等)

现在我们需要一个“键”列表或第一个元素的列表:[1, 2, 3]

在 python 3 中我使用的是

people_ids, _ = list(zip(*people))
# or even
people_ids = [p[0] for p in people]

zip 方式看起来不太简洁,特别是 python 3 使 zip 成为迭代器所需的额外 list(...)

第二种理解方法的可读性稍高,但也不能概括,例如。在同一调用中返回第二个、第三个元素等的列表。

有更好的方法吗?

(其中“更好”主要意味着干净和可读,但性能也可能有一些相当大的)

最佳答案

使用next ,您可以从可迭代中获取第一项:

>>> people = [
... (1, 'anne'),
... (2, 'ben'),
... (3, 'charlie'),
... ]
>>> next(zip(*people))
(1, 2, 3)

替代使用mapoperator.itemgetter :

>>> import operator
>>> list(map(operator.itemgetter(0), people))
[1, 2, 3]
<小时/>

顺便说一句,没有 listzip 解决方案应该可以工作:

>>> people_ids, _ = zip(*people)
>>> people_ids
(1, 2, 3)

关于python - 大多数 pythonic3 dezip(?) 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com