为什么这不是给我“3”而是“[3]”?
a = [3]
print "".join(str(a))
答案 0 :(得分:8)
因为您在整个列表中调用了to string函数
尝试:
a = [3]
print "".join([str(v) for v in a])
在阅读问题的标题后,您只是尝试从列表中获取单个整数,或者您是否要将整数列表转换为“更大”的整数,例如:
a = [3, 2]
print "".join([str(v) for v in a]) ## This gives a string and not integer
>>> "32"
答案 1 :(得分:4)
你正在数组上使用str()。 string convert [3] to“[3]”。你可能正在寻找
"".join(str(i) for i in a)
答案 2 :(得分:3)
也许只是通过索引取消引用:
print a[0]
或者:
for item in a:
print item
答案 3 :(得分:2)
因为str(a)
为您提供了列表的字符串表示,即“[3]”。
尝试
"".join([str(elem) for elem in a])
在加入之前将整数列表转换为字符串列表。
答案 4 :(得分:1)
这会产生预期的行为:
"".join([str(x) for x in a])
答案 5 :(得分:0)
传入生成器表达式以加入而不是列表解析:
"".join(str(x) for x in a)
如果你的列表只包含数字,你可以使用repr(),因为那是str()的目的:
"".join(repr(x) for x in a)
如果您使用python 2.X,则可以使用反引号作为repr()的快捷方式。但这在3.X中不可用:
"".join(`x` for x in a)