0

我有一个列表列表:

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

我正在尝试将其转换为元组列表:

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

3 回答 3

5

非常简单,只需使用列表推导来循环源列表并将每个元素转换为元组,方法是直接将项目传递给tuplebuiltin

>>> 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')]
于 2012-05-31T10:43:31.863 回答
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]
于 2012-05-31T10:44:49.940 回答
1

列表推导会将列表中的每个元素转换为一个元组:

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')]
于 2012-05-31T10:43:38.697 回答