我有一个列表列表:
[['AB', '132'], ['C D'], ['EFG'], ['HJ K', '2 1']]
我正在尝试将其转换为元组列表:
[('AB', '132'), ('C D', ''), ('EFG', ''), ('HJ K', '2 1')]
非常简单,只需使用列表推导来循环源列表并将每个元素转换为元组,方法是直接将项目传递给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')]
一种可能性是使用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]
列表推导会将列表中的每个元素转换为一个元组:
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')]