我有一个列表,其内容为:
x = ['A', 2, 'B', 2, 'C', 2, 'D', 2, 'a', 4, 'b', 2, 'c', 1, 'd', 2]
我希望输出为:
A2B2C2D2a4b2c1d2
我尝试过:
print(''.join(str(x)))
但是它给我一个错误,提示:
print(''.join(str(x)))
TypeError: 'str' object is not callable`
猜测是因为这些整数和字符串一起发生了。
如何解决上述问题以获得所需的输出?
答案 0 :(得分:2)
使用map()
:
''.join(map(str, x))
代码:
x = ['A', 2, 'B', 2, 'C', 2, 'D', 2, 'a', 4, 'b', 2, 'c', 1, 'd', 2]
print(''.join(map(str, x)))
# A2B2C2D2a4b2c1d2
答案 1 :(得分:1)
str(x)
给出字符串x
的表示形式-它不会迭代x
中的值。试试这个:
print(''.join([str(a) for a in x]))
答案 2 :(得分:0)
尝试一下:
print(''.join([str(k) for k in x]))
输出:
A2B2C2D2a4b2c1d2
答案 3 :(得分:0)
x = ['A', 2, 'B', 2, 'C', 2, 'D', 2, 'a', 4, 'b', 2, 'c', 1, 'd', 2]
理解:
s = '' # empty var
for elem in x: # for each elem in x
s += str(elem) # concatenate it with prev s
print(s) # A2B2C2D2a4b2c1d2
可以缩写为:
print(''.join([str(elem) for elem in x])) # A2B2C2D2a4b2c1d2
使用减少:
print(reduce(lambda x,y:str(x)+str(y),x)) # A2B2C2D2a4b2c1d2
答案 4 :(得分:0)
也可以通过创建一个新列表来完成,其中将x中的所有元素都转换为字符串:
x = ['A', 2, 'B', 2, 'C', 2, 'D', 2, 'a', 4, 'b', 2, 'c', 1, 'd', 2]
strings = []
for e in x:
strings.append(str(e))
print(''.join(strings))
上面的答案虽然简单得多。