gpt4 book ai didi

python - 转换元组列表的大多数 pythonic 方法

转载 作者:太空狗 更新时间:2023-10-30 01:59:08 25 4
gpt4 key购买 nike

我需要转换以下样式的元组列表:

[(day1, name1, value1), (day2, name2, value2), (day3, name3, value3)]... etc

进入:

[day1, day2, day3], [name1, name2, name3], [value1, value2, value3]... etc

目前我是这样做的:

vals is the list of tuples
day = []
name = []
value = []
for val in vals:
day.append(val[0])
name.append(val[1])
value.append(val[2])

它有效,但它看起来很丑......我想知道是否有更“pythonic”的方式来实现相同的结果

最佳答案

列表理解 zip() function最简单:

[list(t) for t in zip(*list_of_tuples)]

这将使用 *arguments 扩展语法将每个单独的元组作为参数应用于 zip()zip() 然后将每个元组中的每个值配对成新的元组。

演示:

>>> list_of_tuples = [('day1', 'name1', 'value1'), ('day2', 'name2', 'value2'), ('day3', 'name3', 'value3')]
>>> [list(t) for t in zip(*list_of_tuples)]
[['day1', 'day2', 'day3'], ['name1', 'name2', 'name3'], ['value1', 'value2', 'value3']]

这会强制输出使用列表;如果您只需要 3 值组合,则可以直接使用 zip():

>>> zip(*list_of_tuples)
[('day1', 'day2', 'day3'), ('name1', 'name2', 'name3'), ('value1', 'value2', 'value3')]

在 Python 3 中,使用 list(zip(*list_of_tuples)) 或只是循环输出。

关于python - 转换元组列表的大多数 pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18637651/

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