将int数组转换为字符串的最佳方法是什么?

rah*_*hmu 2 python python-2.7

我想将一个int数组(像这样[1, 1, 2, 1])转换为字符串("1121").

什么是最好的(最pythonic)方式?

我总是可以这样做,然后删除额外的括号:

>>> str([1, 2, 1, 1])
'[1, 2, 1, 1]'
Run Code Online (Sandbox Code Playgroud)

或者我可以这样做:

s = ""
for i in [1, 2, 1, 1]:
    s += s(i)
Run Code Online (Sandbox Code Playgroud)

但这两种方法都有点不稳定.有没有更好的方法呢?

为了记录,我自然对所有版本的Python感兴趣,但我正在研究py2.7并且更喜欢使用这个版本的答案.

NPE*_*NPE 5

尝试:

l = [1, 2, 1, 1]
s = ''.join(map(str, l))
print(s)
Run Code Online (Sandbox Code Playgroud)

在这里,map(str, l)转换l为字符串列表,并''.join(...)合并字符串.

  • @delnan因为*str.join*对数据进行了两次传递,所以如果你给它一个列表开始它会运行得更快.这是少数几个总是需要中间列表的情况之一(如果你不提供一个,*str.join*必须自己构建一个). (7认同)
  • @RaymondHettinger:+1有趣,没有考虑到(但现在有意义 - 计算结果字符串大小的一个通道和构建它的一个通道).我可能仍然习惯使用生成器表达式并保持一致性. (2认同)

Ned*_*der 5

生成器表达式:

"".join(str(i) for i in l)
Run Code Online (Sandbox Code Playgroud)

PS:你的"数组"真的是一个列表.