逆向工程对其正则形式的简单列表理解

2024-05-17 04:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图逆向工程下面的清单理解,但我的尝试只产生1卡。我错过了什么?你知道吗

ranks = [_ for _ in range(2, 11)] + ['JACK', 'QUEEN', 'KING', 'ACE']
suits = ['SPADE', 'HEART ', 'DIAMOND', 'CLUB']

def get_deck():
    return [[rank, suit] for rank in ranks for suit in suits]

我的尝试:

def get_deck():
    for rank in ranks:
        for suit in suits:
            return [rank, suit]

Tags: inforgetreturndefrange工程逆向
2条回答

您可以通过在列表末尾添加[::-1]来反转列表。所以你可以做你的列表理解,然后扭转它。或者直接打电话给名单上的reversed。你知道吗

return意味着您结束该函数的代码路径,并且可以选择返回一个单个值(该值当然可以是一个元组,因此您可以通过一个值返回多个值)。你知道吗

如果要编写生成器函数yield是您的朋友:

def get_deck():
    for rank in ranks:
        for suit in suits:
            yield [rank, suit]

如果我们现在调用函数,我们将获得一个生成器对象:

>>> get_deck()
<generator object get_deck at 0x7f4458438ca8>

如果希望基于生成器生成列表,可以对get_deck()函数的结果调用list(..)

>>> list(get_deck())
[[2, 'SPADE'], [2, 'HEART '], [2, 'DIAMOND'], [2, 'CLUB'], [3, 'SPADE'], [3, 'HEART '], [3, 'DIAMOND'], [3, 'CLUB'], [4, 'SPADE'], [4, 'HEART '], [4, 'DIAMOND'], [4, 'CLUB'], [5, 'SPADE'], [5, 'HEART '], [5, 'DIAMOND'], [5, 'CLUB'], [6, 'SPADE'], [6, 'HEART '], [6, 'DIAMOND'], [6, 'CLUB'], [7, 'SPADE'], [7, 'HEART '], [7, 'DIAMOND'], [7, 'CLUB'], [8, 'SPADE'], [8, 'HEART '], [8, 'DIAMOND'], [8, 'CLUB'], [9, 'SPADE'], [9, 'HEART '], [9, 'DIAMOND'], [9, 'CLUB'], [10, 'SPADE'], [10, 'HEART '], [10, 'DIAMOND'], [10, 'CLUB'], ['JACK', 'SPADE'], ['JACK', 'HEART '], ['JACK', 'DIAMOND'], ['JACK', 'CLUB'], ['QUEEN', 'SPADE'], ['QUEEN', 'HEART '], ['QUEEN', 'DIAMOND'], ['QUEEN', 'CLUB'], ['KING', 'SPADE'], ['KING', 'HEART '], ['KING', 'DIAMOND'], ['KING', 'CLUB'], ['ACE', 'SPADE'], ['ACE', 'HEART '], ['ACE', 'DIAMOND'], ['ACE', 'CLUB']]

您还可以get_deck函数中构建一个列表,例如:

def get_deck():
    result = []
    for rank in ranks:
        for suit in suits:
            result.append([rank,suit])return result

相关问题 更多 >