我有一份清单清单:
[['AB', '132'], ['C D'], ['EFG'], ['HJ K', '2 1']]
我试图将其转换为元组列表:
[('AB', '132'), ('C D', ''), ('EFG', ''), ('HJ K', '2 1')]
答案 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]