2009-12-13 57 views
3

python中是否有任何執行以下操作的東西?或者我必須自己實施它?python中的數組的字符串表示形式

array = [0, 1, 2] 
myString = SOME_FUNCTION_THAT_TAKES_AN_ARRAY_AS_INPUT(array) 
print myString 

它打印

(0, 1, 2) 

感謝

+1

'print array'works ...你是否特別感興趣的括號? – EMiller 2009-12-13 04:30:01

+0

您應該知道並使用序列類型的各種名稱,它們是[list],(tuple,..)和{'dict':..}。他們都有不同的行爲。你想要的是將列表轉換爲元組,並且可以通過打印元組(列表)完成。另見Prasoon的答案,這是正確的。 – 2009-12-13 06:28:26

+1

我認爲每個人都已經從字面上理解了這個問題,而極樂世界正在尋找的是'str(array)'。 – 2009-12-13 07:01:40

回答

2

如果你的數組的項目是特殊的整數,str(tuple(array))建議@ jboxer的答案將工作。對於大多數其他類型的項目,它可能是更大的問題,因爲str(tuple(...))使用reprstr - 真正需要的是一個默認行爲(否則print荷蘭國際集團與項目的元組,如串'1, 2'將是非常令人困惑,看起來就像一個字符串,其中包含兩個int項12! - ),但它可能是也可能不是你想要的。例如:

>>> array = [0.1, 0.2] 
>>> print str(tuple(array)) 
(0.10000000000000001, 0.20000000000000001) 

浮點數,repr發出許多比作在大多數情況下,感覺更多的數字(而str,如果直接調用上的數字,表現好一點)。所以,如果你的項目是容易成爲float S(以及int s,這將不需要的預防措施,但不會受此一個;-)受到傷害,你也許會更好:

>>> print '(%s)' % (', '.join(str(x) for x in array)) 
(0.1, 0.2) 

然而,如前面提到的,如果某些項目是字符串,這可能會產生模糊的輸出!

如果您知道list中稱爲「陣列」的數據類型,它將爲推薦解決方案提供更好的基礎。

5

你很幸運,Python有用於這一目的完全是一個功能。它被稱爲join

print "(" + ", ".join(array) + ")" 

如果你熟悉PHP,join類似於implode。上面的", "是元素分隔符,可以用任何字符串替換。例如,

print "123".join(['a','b','c']) 

將打印

a123b123c 
+0

如果數組的項目不是字符串,則不起作用。 – 2009-12-13 05:54:35

+1

這會在你的例子中起作用,但不在提交者給出的那個中,因爲他使用了整數。儘管你可以使用「,」.join([數組中的[str(x)])。 – jakeboxer 2009-12-13 06:19:30

4
SOME_FUNCTION_THAT_TAKES_AN_ARRAY_AS_INPUT = tuple 
+0

OP聲稱他想要一個字符串(儘管他使用'print'使這個混淆了;-)。 – 2009-12-13 05:55:46

+0

我知道。我的評論更多的是一句tongue語,特別是因爲我對他使用「SOME_FUNCTION_THAT_TAKES_AN_ARRAY_AS_INPUT」有一些啓發。 :-) – 2009-12-13 06:31:18

5
def SOME_FUNCTION_THAT_TAKES_AN_ARRAY_AS_INPUT (arr): 
    return str(tuple(arr)) 

更換strunicode如果您需要。

相關問題