Python 如何从类中的列表返回字符串数组

Python 如何从类中的列表返回字符串数组,python,arrays,string,list,class,Python,Arrays,String,List,Class,我想从列表中返回一个由字符串类型字符组成的数组,目前我的程序正在将每次迭代直接打印到shell中这是我当前的输出: **我需要的输出是:** 2 C, 3 C, 4 C, 5 C, 6 C, 7 C, 8 C, 9 C, T C, J C, Q C, K C, A C, 2 D, 3 D, 4 D, 5 D, 6 D, 7 D, 8 D, 9 D, T D, J D, Q D, K D, A D, 2 H, 3 H, 4 H, 5 H, 6 H, 7 H, 8 H, 9 H, T H, J H,

我想从列表中返回一个由字符串类型字符组成的数组,目前我的程序正在将每次迭代直接打印到shell中这是我当前的输出:

**我需要的输出是:**

2 C, 3 C, 4 C, 5 C, 6 C,
7 C, 8 C, 9 C, T C, J C,
Q C, K C, A C, 2 D, 3 D,
4 D, 5 D, 6 D, 7 D, 8 D,
9 D, T D, J D, Q D, K D,
A D, 2 H, 3 H, 4 H, 5 H,
6 H, 7 H, 8 H, 9 H, T H,
J H, Q H, K H, A H, 2 S,
3 S, 4 S, 5 S, 6 S, 7 S,
8 S, 9 S, T S, J S, Q S,
K S, A S
我尝试实现for循环和计数器,但没有成功。。。这是我的代码:

import random
class Card:
    def __init__(self, rank, suit): # initialize number variables here
        self._rank = rank
        self._suit = suit
        
    
    def __str__(self): #overload this to get a readable string representation of our card object
        return str(self._rank) + ' ' + str(self._suit)
    
    def __eq__(self, other):
        if self._rank == other._rank:
            return True
    
    def __ne__(self, other):
        if self._rank != other._rank:
            return True

class Deck:
    def __init__(self): 
        # create a list of card objects only need to pass in self
        #intialize a string or list of suits
        #intialize a string or list of ranks
        # building the list of cards
        
        self._deck = []
        self._dealt = []
        suits = ['S', 'C', 'D', 'H']
        ranks = ['2', '3' , '4', '5', '6', '7' , '8', '9','T', 'J' , 'Q', 'K', 'A']
        for suit in suits:
            for rank in ranks:
                self._deck.append(Card(rank,suit))
        
        
    def __str__(self):
        return ', \n'.join(str(i) for i in self._deck)

感谢您的帮助,我们将不胜感激。

暴力方式是一个循环:

    def __str__(self):
        s = []
        for n in range(0,len(self._deck),5):
            s.append( ' '.join(str(i) for i in self._deck[n:n+5] )
        return '\n'.join(s)
有关将牌组分组为5张牌的信息,请参阅。然后,您可以使用
将卡加入一个区块,并使用
,\n
将区块加入

def __str__(self):
    n = 5
    return ',\n'.join(', '.join(self._deck[i:i + n]) for i in range(0, len(self._deck), n))

一种方法是在for循环中使用逻辑排序操作,该操作保持每行输出数量的计数:

ctr=0
对于甲板上的d:
ctr+=1
打印(d,结束=',')
#检查是否每行最多打印5个字符
如果ctr==5:
#打印新行
打印()
#初始中心
ctr=ctr%5

预期输出遵循的模式是什么?5个卡对象,然后是新行
def __str__(self):
    n = 5
    return ',\n'.join(', '.join(self._deck[i:i + n]) for i in range(0, len(self._deck), n))