簡體   English   中英

將元組列表轉換為Python字符串

[英]Converting lists of tuples to strings Python

我在python中編寫了一個函數,例如返回一個列表

[(1,1),(2,2),(3,3)] 

但我希望輸出為一個字符串,所以我可以用另一個char替換逗號,所以輸出將是

'1@1' '2@2' '3@3' 

有什么簡單的方法嗎?:)感謝提前的任何提示

這看起來像tuple list ,其中每個tuple有兩個元素。

' '.join(['%d@%d' % (t[0],t[1]) for t in l])

當然可以簡化為:

' '.join(['%d@%d' % t for t in l])

甚至:

' '.join(map(lambda t: '%d@%d' % t, l))

其中l是您的原始list 這會為列表中的每個元組生成“number @ number”對。 然后將這些對與空格( ' ' )連接起來。

當我第一次開始使用Python時, join語法看起來有點奇怪,但文檔是一個巨大的幫助。

您可以使用帶有列表推導或生成器表達式的%運算符將元組轉換為字符串,例如

ll = [(1,1), (2,2), (3,3)]
['%d@%d' % aa for aa in ll]

這將返回一個字符串列表,如:

['1@1', '2@2', '3@3']

您可以將生成的字符串列表連接在一起以進行輸出。 本文介紹了六種不同的方法,包括基准和分析它們的相對優點。

' '.join([str(a)+"@"+str(b) for (a,b) in [(1,1),(2,2),(3,3)]])

或者對於列表中的任意元組,

' '.join(['@'.join([str(v) for v in k]) for k in [(1,1),(2,2),(3,3)]])

In [1]: ' '.join('%d@%d' % (el[0], el[1]) for el in [(1,1),(2,2),(3,3)])
Out[1]: '1@1 2@2 3@3'
[ str(e[0]) + ',' + str(e[1]) for e in [(1,1), (2,2), (3,3)] ]

這是如果你想要它們在一個字符串集合中,如果你想要一個輸出字符串或一個集合,我不明白它。

你只需要生成器理解中的joinstr

>>> ['@'.join(str(i) for i in t) for t in l]
['1@1', '2@2', '3@3']

>>> ' '.join('@'.join(str(i) for i in t) for t in l)
'1@1 2@2 3@3'

你可以使用repr函數,然后只需替換字符串的位:

>>> original = [(1,1),(2,2),(3,3)]
>>> intermediate = repr(original)
>>> print intermediate
[(1, 1), (2, 2), (3, 3)]
>>> final = intermediate.replace('), (', ' ').replace('[(','').replace(')]','').replace(', ','@')
>>> print final
1@1 2@2 3@3

但這只有在你確定沒有元組具有以下必須在最終結果中保留的字符序列時才有效: ), ([()] ,

[str(item).replace(',','@') for item in [(1,1),(2,2),(3,3)]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM