我正在尝试对以下列表理解进行反向工程,但我的尝试只生成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]
答案 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
。