我想将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,并且更喜欢适用于此版本的答案。
答案 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)