[英]using .join method in python removes first and last items in list
我正在嘗試正確顯示類的字符串表示形式。 為此,我需要將幾個列表連接成一個字符串。 列表應在字符串中用空格分隔。
這些是我的清單:
[['C', 'A'], ['C', '2'], ['C', '3'], ['C', '4'], ['C', '5'], ['C', '6'], ['C', '7'], ['C', '8'], ['C', '9'], ['C', 'T'], ['C', 'J'], ['C', 'Q'], ['C', 'K'], ['S', 'A'], ['S', '2'], ['S', '3'], ['S', '4'], ['S', '5'], ['S', '6'], ['S', '7'], ['S', '8'], ['S', '9'], ['S', 'T'], ['S', 'J'], ['S', 'Q'], ['S', 'K'], ['H', 'A'], ['H', '2'], ['H', '3'], ['H', '4'], ['H', '5'], ['H', '6'], ['H', '7'], ['H', '8'], ['H', '9'], ['H', 'T'], ['H', 'J'], ['H', 'Q'], ['H', 'K'], ['D', 'A'], ['D', '2'], ['D', '3'], ['D', '4'], ['D', '5'], ['D', '6'], ['D', '7'], ['D', '8'], ['D', '9'], ['D', 'T'], ['D', 'J'], ['D', 'Q'], ['D', 'K']]
這是我用來加入他們的代碼:
def __str__(self):
str_deck_cards = 'Deck contains '
for t in self.deck_cards:
str_deck_cards += ' '.join(t)
return str_deck_cards
但是我的輸出看起來像這樣:
Deck contains C AC 2C 3C 4C 5C 6C 7C 8C 9C TC JC QC KS AS 2S 3S 4S 5S 6S 7S 8S 9S TS JS QS KH AH 2H 3H 4H 5H 6H 7H 8H 9H TH JH QH KD AD 2D 3D 4D 5D 6D 7D 8D 9D TD JD QD K
為什么不能正確加入列表?
我也嘗試過set()
def __str__(self):
str_deck_cards = 'Deck contains '
for t in self.deck_cards:
str_deck_cards += ' '.join(set(t))
return str_deck_cards
但是它仍然沒有正確。 我現在沒主意了,有什么建議嗎?
.join
采取可迭代的方式,並在項目之間添加所需的字符串。 因此,這按預期工作。
您想要的是在串聯生成的字符串時,添加空格,以便-
str_deck_cards += ' '.join(t) + ' '
當然,最后,如果需要,您必須擺脫尾隨的空白。
==編輯==
您也可以這樣做:
return 'Deck contains ' + ' '.join([' '.join(x) for x in self.deck_cards])
實際上什么也沒有刪除。 您在子列表C AC 2
中的兩個字符之間而不是在兩個子列表CA C2
之間放置空格。 所以替換:
str_deck_cards += ' '.join(set(t)) # gives C AC 2C 3C 4C 5...
通過:
str_deck_cards +=''.join(t)+' ' # gives CA C2 C3 C4 C5...
這樣可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.