将常规形式的简单列表理解逆向工程

时间:2017-07-17 18:43:33

标签: 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]

2 个答案:

答案 0 :(得分:3)

sc.textfile('/home/sathya/location/*.txt')表示您结束该函数的代码路径,并且可选择返回单个值(该值当然可以是元组,所以你可以通过一个值返回多个值。)

如果您想编写生成器功能return是您的朋友:

yield

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

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

如果您希望根据生成器生成列表,可以在>>> get_deck() <generator object get_deck at 0x7f4458438ca8> 函数的结果上调用list(..)

get_deck()

您还可以>>> 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

答案 1 :(得分:0)

您可以通过将[::-1]添加到结尾来反转列表。所以你可以做你的列表理解,然后反转它。或者只需在列表中拨打reversed