【问题标题】:Convert list of tuples of mixed data types into all string将混合数据类型的元组列表转换为所有字符串
【发布时间】:2014-04-02 13:08:35
【问题描述】:

我有这份清单;

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

【问题讨论】:

  • “结果不正确”不是对问题的有用描述

标签: python string list python-2.7 tuples


【解决方案1】:

使用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')]

【讨论】:

  • 使用您的答案我刚刚尝试了嵌套地图(仅用于学习目的)
  • @GrijeshChauhan, lambda i: str(i) 在您的答案中可以替换为 str
  • 是的,我试过了,它背后的关键技巧是什么时候使用 lambda 或什么时候可以避免。
  • @GrijeshChauhan,最后一条评论是个问题吗?
  • 是的,我有疑问。我记得你曾经在这里告诉我I could find我现在又读了一遍。谢谢!
【解决方案2】:

你也可以使用这个:

>>> 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')]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-17
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多