将一个整数列表转换为字符串

32

我想将我的整数列表转换为字符串。以下是我创建整数列表的方式:

new = [0] * 6
for i in range(6):
    new[i] = random.randint(0,10)

就像这样:

new == [1,2,3,4,5,6]
output == '123456'

新的代码可以更简单:new = [ random.randint(0,10) for i in range(6) ] - chepner
6个回答

67

4
对于不喜欢使用 map 的人,可以使用 ''.join([str(x) for x in new]) - chepner
2
甚至可以使用''.join(str(random.randint(0, 10)) for i in range(10)) - Chinmay Kanchi

13

肯定有更好的方法来做到这一点,但下面是非常直接的做法:

mystring = ""

for digit in new:
    mystring += str(digit)

12

有两种简单的方法来实现这个:

"".join(map(str, A))
"".join(str(a) for a in A)

1
来晚了,有点偏离问题,但你可以利用array模块并使用以下方法:
from array import array

array('B', new).tobytes()

b'\n\t\x05\x00\x06\x05'

实际上,它从您的整数列表中创建一个 1 字节宽的整数数组(参数为 'B')。然后将该数组转换为字符串作为二进制数据结构,因此输出不会像您期望的那样(您可以使用 decode() 解决此问题)。然而,这应该是最快的整数转字符串转换方法之一,并且应该能节省一些内存。另请参阅文档和相关问题:

https://www.python.org/doc/essays/list2str/

https://docs.python.org/3/library/array.html#module-array

在Python中将整数转换为字符串的方法是什么?


也许只能用Python 3?在Python 2中,tobytes对我不可用。 - Samuel

1
如果您不喜欢 map()
new = [1, 2, 3, 4, 5, 6]

output = "".join(str(i) for i in new)
# '123456'

记住,str.join() 接受一个 可迭代对象,因此不需要将参数转换为 list

-4
你可以循环遍历列表中的整数,同时将其转换为字符串类型并附加到“字符串”变量中。
for int in list:
    string += str(int)

@Cherry,你的代码完全相同,改变变量名并不会使代码有所不同。 - WhatsThePoint
1
此外,这是非常糟糕的做法。永远不要使用保留名称作为变量名。 - Fejs
@WhatsThePoint 这是不同的,只是你看不到。 - Cherry
请阅读这个简短的回答:https://www.quora.com/What-is-the-difference-between-reserved-word-and-variable-name 没有观点,这是事实。 - Fejs
@Fejs 对于每件事情,都有不同的角度和看法。 - Cherry
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接