Python列表转换

时间:2018-01-31 00:39:23

标签: python list

我有以下格式的列表

[Data(Id=1, value='abc', ratio= 0.1),
Data(Id=2, value='def', ratio= 0.3),
Data(Id=3, value='ghi', ratio= 0.15),
Data(Id=4, value='xyz', ratio= 0.5)]

我想知道是否有一种pythonic方法可以将此列表转换为如下所示的元组列表

[(1, 'abc', 0.1), (2,'def',0.3), (3,'ghi',0.15), (4, 'xyz',0.5)] 

我知道我可以解析列表中的每个元素,但这样效率非常低,我正在寻找一种可能有几条简单线条的pythonic方法。

2 个答案:

答案 0 :(得分:1)

假设对象为collections.namedtuples

from collections import namedtuple
Data = namedtuple('Data', ['Id', 'value', 'ratio'])
s = [Data(Id=1, value='abc', ratio= 0.1), Data(Id=2, value='def', ratio= 0.3), Data(Id=3, value='ghi', ratio= 0.15), Data(Id=4, value='xyz', ratio= 0.5)]
new_s = [(i.Id, i.value, i.ratio) for i in s]

输出:

[(1, 'abc', 0.1), (2, 'def', 0.3), (3, 'ghi', 0.15), (4, 'xyz', 0.5)]

答案 1 :(得分:0)

[(d.Id, d.value, d.ratio) for d in data]

data是您的清单。

请参阅:https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions