任何人都可以解释下面的例子吗? 这是如何从for循环中获取所有元素而不仅仅是最后一个元素?
class Deck:
def __init__(self):
self.cards = [Card(SUITS[i], RANKS[j])
for i in range (0, len(SUITS))
for j in range (0, len(RANKS))]
答案 0 :(得分:2)
你有一个嵌套循环的列表理解。它可以翻译为:
self.cards = []
for i in range(0, len(SUITS)):
for j in range(0, len(RANKS)):
self.cards.append(Card(SUITS[i], RANKS[j]))
通过直接循环SUITS
和RANKS
,可以进一步简化:
self.cards = [Card(suit, rank) for suit in SUITS for rank in RANKS]
或者您可以使用itertools.product()
替换嵌套循环:
from itertools import product
self.cards = [Card(suit, rank) for suit, rank in product(SUITS, RANKS)]
答案 1 :(得分:0)
这有点令人困惑,但它转换为这个伪代码:
self.cards = [];
for i in range (0, len(SUITS))
for j in range (0, len(RANKS))
self.cards.append(Card(SUITS[i], RANKS[j]));
基本上是循环中的循环。
在我的例子中阅读起来要容易得多。
答案 2 :(得分:0)
这是list comprehension。它基本上是一对嵌套的循环:
class Deck:
def __init__(self):
self.cards = []
for i in range(0, len(SUITS):
for j in range(0, len(RANKS):
self.cards.append(Card(SUITS[i], RANKS[j]))