我有一个应该代表二进制的整数列表:
x = [1, 0, 1, 1, 0, 0, 0, 0]
y = ''.join(x[:4])
我似乎无法加入它,我得到'序列项0:预期str实例,int found'
但是,如果我这样做
x = [str(1), str(0), str(1), str(1), str(0), str(0), str(0), str(0)]
y = ''.join(x[:4])
我得到'类型错误int对象不可订阅'但是我不想尝试访问整数。
任何人都知道发生了什么事?
答案 0 :(得分:2)
str.join
采用一个迭代,其元素需要是字符串,而不是整数。
我看到你自己已经弄明白了,你的第二种方法确实有效(你给出的错误大概来自其他一些代码)。但是,将每个int
手动转换为str
就像那样绝对不是Pythonic。相反,您可以使用列表推导/生成器表达式或map
来将int
转换为str
s:
''.join(str(i) for i in x[:4])
''.join(map(str, x[:4]))
示例:强>
In [84]: ''.join(str(i) for i in x[:4])
Out[84]: '1011'
In [85]: ''.join(map(str, x[:4]))
Out[85]: '1011'
答案 1 :(得分:0)
还可以使用functools reduce
from functools import reduce
reduce(lambda x, y: str(x) + str(y),[1, 0, 1, 1, 0, 0, 0, 0])
'10110000'