用类解释Python示例

2024-04-24 16:06:20 发布

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

谁能给我解释一下下面的例子吗? 如何从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))]

Tags: inself元素forleninitdefrange
3条回答

这是一个list comprehension。基本上是一对嵌套for循环:

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]))

你有一个嵌套循环的列表。可以翻译为:

self.cards = []
for i in range(0, len(SUITS)):
    for j in range(0, len(RANKS)):
        self.cards.append(Card(SUITS[i], RANKS[j]))

不过,通过直接在SUITSRANKS上循环,可以进一步简化:

self.cards = [Card(suit, rank) for suit in SUITS for rank in RANKS]

或者可以使用^{}替换嵌套循环:

from itertools import product

self.cards = [Card(suit, rank) for suit, rank in product(SUITS, RANKS)]

这有点让人困惑,但可以翻译成以下伪代码:

self.cards = [];
for i in range (0, len(SUITS))
   for j in range (0, len(RANKS))
        self.cards.append(Card(SUITS[i], RANKS[j]));

基本上是一个循环中的一个循环。你知道吗

在我的例子中更容易阅读。你知道吗

相关问题 更多 >