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

时间:2012-02-04 18:53:36

标签: python python-2.7

我想将int数组(如此[1, 1, 2, 1])转换为字符串("1121")。

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

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

>>> str([1, 2, 1, 1])
'[1, 2, 1, 1]'

或者我可以这样做:

s = ""
for i in [1, 2, 1, 1]:
    s += s(i)

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

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

4 个答案:

答案 0 :(得分:5)

尝试:

l = [1, 2, 1, 1]
s = ''.join(map(str, l))
print(s)

此处,map(str, l)l转换为字符串列表,''.join(...)合并字符串。

答案 1 :(得分:5)

生成器表达式:

"".join(str(i) for i in l)

PS:你的“数组”实际上是一个列表。

答案 2 :(得分:4)

试试这个:

lst = [1, 2, 1, 1]
''.join(str(x) for x in lst)

它是高效的,因为它不会创建一个中间列表(如map那样),而是使用迭代器遍历列表。

答案 3 :(得分:0)

这个只是为了好玩,因为它只在列表的每个元素都是一位数整数时才有效:

lst = [1, 1, 0, 1]

def convert_to_str():
    new_num = 0
    for i in xrange(len(lst)):
        new_num += lst[i]*(10**(len(lst)-1-i))
    return str(new_num)