将列表列表转换为元组列表

时间:2012-05-31 10:42:11

标签: python list tuples

我有一份清单清单:

[['AB', '132'], ['C D'], ['EFG'], ['HJ K', '2  1']]  

我试图将其转换为元组列表:

[('AB', '132'), ('C D', ''), ('EFG', ''), ('HJ K', '2  1')]

3 个答案:

答案 0 :(得分:4)

非常简单,只需使用list comprehension循环遍历源列表并将每个元素转换为元组,方法是直接将项目传递给tuple builtin

>>> example = [['AB', '132'], ['C D'], ['EFG'], ['HJ K', '2 1']]
>>> [tuple(i) for i in example]
[('AB', '132'), ('C D',), ('EFG',), ('HJ K', '2 1')]

或者,如果您喜欢函数式编程,请改用map

>>> map(tuple, example)
[('AB', '132'), ('C D',), ('EFG',), ('HJ K', '2 1')]

答案 1 :(得分:2)

list comprehension会将列表中的每个元素转换为元组:

data = [['AB', '132'], ['C D'], ['EFG'], ['HJ K', '2 1']]
[tuple(elem) for elem in data]

给出:

[('AB', '132'), ('C D',), ('EFG',), ('HJ K', '2 1')]

答案 2 :(得分:2)

一种可能性是使用map(tuple, l)

In [1]: l=[['AB', '132'], ['C D'], ['EFG'], ['HJ K', '2  1']]  

In [2]: map(tuple, l)
Out[2]: [('AB', '132'), ('C D',), ('EFG',), ('HJ K', '2  1')]

缺点是在Python 3中,这将返回一个可迭代而不是一个列表。如果你必须有一个列表,这需要拼写为list(map(tuple, l))(这适用于Python 2和3)。

另一种适用于Python 2和3的方法是使用列表解析:

[tuple(x) for x in l]