Aug*_*nha 4 python tuples list
我需要转换样式中的元组列表:
[(day1, name1, value1), (day2, name2, value2), (day3, name3, value3)]... etc
Run Code Online (Sandbox Code Playgroud)
成:
[day1, day2, day3], [name1, name2, name3], [value1, value2, value3]... etc
Run Code Online (Sandbox Code Playgroud)
目前我这样做:
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])
Run Code Online (Sandbox Code Playgroud)
它有效,但它看起来很丑......我想知道是否有更"pythonic"的方式来实现相同的结果
Mar*_*ers 10
使用该zip()函数的列表理解最简单:
[list(t) for t in zip(*list_of_tuples)]
Run Code Online (Sandbox Code Playgroud)
这适用每个单独元组作为参数传递给zip()使用所述*arguments扩展的语法.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']]
Run Code Online (Sandbox Code Playgroud)
这会强制输出使用列表; zip()如果您需要的只是3值组合,您可以直接使用:
>>> zip(*list_of_tuples)
[('day1', 'day2', 'day3'), ('name1', 'name2', 'name3'), ('value1', 'value2', 'value3')]
Run Code Online (Sandbox Code Playgroud)
在Python 3中,使用list(zip(*list_of_tuples))或只是循环输出.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |