簡體   English   中英

在python中使用.join方法刪除列表中的第一項和最后一項

[英]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.

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