Python中数组的字符串表示

3 投票
4 回答
4529 浏览
提问于 2025-04-15 16:58

有没有什么可以在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' 的元组,可能会让人很困惑,因为它看起来就像是两个整数 12 的字符串!),但这可能不是你想要的效果。例如:

>>> 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(你称之为“数组”)里可能会有什么类型的数据,这样就能更好地推荐解决方案了。

撰写回答