我有这个清单;
List=[(1, 'John', 129L, 37L), (2, 'Tom', 231L, 23L)]
我想将其转换为这样;
OutputList = [('1', 'John', '129', '37'), ('2', 'Tom', '231', '23')]
列表中的所有数据类型都将变为字符串。我试过了[str(i) for i in List]
,但结果并不正确。解决这个问题的正确方法是什么?
我正在使用python 2.7
答案 0 :(得分:7)
使用nested list comprehension(generator expression内部):
>>> 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')]
或使用map
代替生成器表达式:
>>> [tuple(map(str, xs)) for xs in lst]
[('1', 'John', '129', '37'), ('2', 'Tom', '231', '23')]
上面的列表推导类似于嵌套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')]
答案 1 :(得分:1)
你也可以用这个:
>>> lst
[(1, 'John', 129L, 37L), (2, 'Tom', 231L, 23L)]
>>> map(lambda x: tuple(map(lambda i: str(i), x)), lst)
[('1', 'John', '129', '37'), ('2', 'Tom', '231', '23')]
修改:在内部地图中将lambda i: str(i)
替换为str
:
>>> map(lambda t: tuple(map(str, t)), lst)
[('1', 'John', '129', '37'), ('2', 'Tom', '231', '23')]