将混合数据类型的元组列表转换为所有字符串

use*_*486 4 python string tuples list python-2.7

我有这个清单;

List=[(1, 'John', 129L, 37L), (2, 'Tom', 231L, 23L)]
Run Code Online (Sandbox Code Playgroud)

我想把它转换成这样的样子;

OutputList = [('1', 'John', '129', '37'), ('2', 'Tom', '231', '23')]
Run Code Online (Sandbox Code Playgroud)

列表中的所有数据类型都将变为字符串.我尝试过,[str(i) for i in List]但结果并不正确.解决这个问题的正确方法是什么?

我正在使用python 2.7

fal*_*tru 7

使用嵌套列表理解(内部生成器表达式):

>>> lst = [(1, 'John', 129L, 37L), (2, 'Tom', 231L, 23L)]
>>> [tuple(str(x) for x in xs) for xs in lst]
[('1', 'John', '129', '37'), ('2', 'Tom', '231', '23')]
Run Code Online (Sandbox Code Playgroud)

或使用map代替生成器表达式:

>>> [tuple(map(str, xs)) for xs in lst]
[('1', 'John', '129', '37'), ('2', 'Tom', '231', '23')]
Run Code Online (Sandbox Code Playgroud)

上面的列表推导类似于以下嵌套for循环:

>>> result = []
>>> for xs in lst:
...     temp = []
...     for x in xs:
...         temp.append(str(x))
...     result.append(tuple(temp))
...
>>> result
[('1', 'John', '129', '37'), ('2', 'Tom', '231', '23')]
Run Code Online (Sandbox Code Playgroud)