我需要在Python中进行这样的转换:
(1, 0, 7, 2, 3, 8, 4, 6, 5)
到
'107238465'
怎么做?
答案 0 :(得分:1)
最简单的方法应该是list comprehension或generator 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)
答案 1 :(得分:0)
这是@ 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