加入整数列表

时间:2018-02-24 21:59:20

标签: python arrays list

我有一个应该代表二进制的整数列表:

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对象不可订阅'但是我不想尝试访问整数。

任何人都知道发生了什么事?

2 个答案:

答案 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'