【问题标题】:Tuple of int values to stringint 值到字符串的元组
【发布时间】:2014-12-22 09:48:45
【问题描述】:

我需要在 Python 中进行这样的转换:

(1, 0, 7, 2, 3, 8, 4, 6, 5)

'107238465'

怎么做?

【问题讨论】:

  • reduce(lambda a, b: a + str(b), (1, 0, 7, 2, 3, 8, 4, 6, 5), "")
  • 更简单:"".join(map(str, (1, 0, 7, 2, 3, 8, 4, 6, 5)))

标签: python type-conversion


【解决方案1】:

最简单的方法应该是使用list comprehensiongenerator expression

t = (1, 2, 3, 4)    
''.join([str(a) for a in t])  # list comprehension

''.join(str(a) for a in t)  # generator expression

如果你有一个字符串元组,你需要列表理解或生成器表达式来将数字转换为字符串:

t = ('a', 'b', 'c')
''.join(t)

【讨论】:

    【解决方案2】:

    这会在我的计算机上@georstef 的回答时间的 2/3 中运行

    >>> str(reduce(lambda x, y: x * 10 + y, (1, 0, 7, 2, 3, 8, 4, 6, 5)))
    '107238465'
    

    下面比较了其他几种方式

    timeit ''.join([str(a) for a in t])
    100000 loops, best of 3: 2.94 us per loop
    
    timeit ''.join(str(a) for a in t)
    100000 loops, best of 3: 3.39 us per loop
    
    timeit str(reduce(lambda x, y: x * 10 + y, t))
    100000 loops, best of 3: 2.06 us per loop
    
    timeit str(t)[1: -1].replace(", ", "")
    100000 loops, best of 3: 1.8 us per loop
    
    timeit str(t).translate(None, "(), ")
    1000000 loops, best of 3: 1.6 us per loop
    

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 2018-05-03
      • 1970-01-01
      • 2018-01-08
      相关资源
      最近更新 更多