Python中数组的字符串表示
有没有什么可以在Python中做到以下这些功能的?还是说我得自己来实现呢?
array = [0, 1, 2]
myString = SOME_FUNCTION_THAT_TAKES_AN_ARRAY_AS_INPUT(array)
print myString
这个功能会打印出
(0, 1, 2)
谢谢
4 个回答
5
def SOME_FUNCTION_THAT_TAKES_AN_ARRAY_AS_INPUT (arr):
return str(tuple(arr))
如果需要的话,可以把 str
替换成 unicode
。
5
你真幸运,Python有一个专门用来做这个的函数,叫做 join
。
print "(" + ", ".join(array) + ")"
如果你对PHP有点了解的话,join
就像PHP里的 implode
。上面那个 ", "
是用来分隔元素的,你可以用任何字符串来替换它。例如,
print "123".join(['a','b','c'])
将会打印出
a123b123c
2
如果你的数组里面的元素都是整数,那么使用 str(tuple(array))
就可以了,正如 @jboxer 的回答所说。对于其他类型的元素,这个方法可能就不太好用了,因为 str(tuple(...))
是用 repr
来处理的,而不是 str
。这样做是为了确保默认行为正常(否则如果你打印一个包含字符串 '1, 2'
的元组,可能会让人很困惑,因为它看起来就像是两个整数 1
和 2
的字符串!),但这可能不是你想要的效果。例如:
>>> array = [0.1, 0.2]
>>> print str(tuple(array))
(0.10000000000000001, 0.20000000000000001)
对于浮点数来说,repr
会输出很多不必要的数字,这在大多数情况下都显得多余(而直接对数字使用 str
的话,效果会好一些)。所以如果你的数组里可能有 float
类型的元素(还有 int
类型的元素,这个方法对它们没有影响),你可能更适合使用:
>>> print '(%s)' % (', '.join(str(x) for x in array))
(0.1, 0.2)
不过,如果你的数组里有字符串的话,这样输出可能会让人感到困惑,正如我之前提到的!
如果你知道你的 list
(你称之为“数组”)里可能会有什么类型的数据,这样就能更好地推荐解决方案了。