[英]List comprehension for nested for loops
我正在创建一个简单的纸牌游戏,并决定尝试实现列表理解。 我真的不知道如何解决这个问题,因为我只处理了1个for循环。
def __init__(self):
self.cards = []
for suit in range(1, 5):
for value in range(2, 11):
self.cards.append(Card(value, suit))
for value in ['Ace', 'King', 'Queen', 'Jack']:
self.cards.append(Card(value, suit))
如果可能的话,这是嵌套的for循环,我希望将其放入列表推导中。 有任何想法吗?
使用嵌套循环,您可以将理解写为:
[expression for x in x_values for y in y_values]
像这样:
def __init__(self):
values = list(range(2,11)) + ['Ace', 'King', 'Queen', 'Jack']
self.cards = [Card(value, suit) for suit in range(1,5) for value in values]
我在单独的行中设置了values
,因此理解并不是太麻烦。 如果您愿意,可以将其作为常数。
当然。 最巧妙的方法将利用itertools.chain
,因此首先:
from itertools import chain
然后简单地:
def __init__(self):
self.cards = [
Card(value, suit)
for suit in range(1, 5)
for value in chain(range(2, 11), ['Ace', 'King', 'Queen', 'Jack'])
]
甚至没有itertools
:
num_vals = range(2, 11)
face_vals = ['Ace', 'King', 'Queen', 'Jack']
self.cards = [
Card(value, suit))
for suit in range(1, 5)
for values in (num_vals, face_vals)
for value in values
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.