我有一个应该表示二进制的整数列表:
x = [1, 0, 1, 1, 0, 0, 0, 0]
y = ''.join(x[:4])
我似乎无法加入它,我得到“序列项 0:预期的 str 实例,已找到 int”
但是如果我这样做
x = [str(1), str(0), str(1), str(1), str(0), str(0), str(0), str(0)]
y = ''.join(x[:4])
我收到“类型错误 int 对象不可订阅”,但我并没有尝试访问整数。
有人知道这是怎么回事吗?
str.join
采用一个迭代器,其元素必须是字符串,而不是整数。
我看到您已经自己解决了这个问题,并且您的第二种方法确实有效(您给出的错误可能来自其他代码)。但是将每个 int
转换为 str
像那样手动 绝对是非 Pythonic 的。相反,您可以使用列表理解/生成器表达式或 map
将 int
转换为 str
:
''.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'