用Python解释Python中的示例

时间:2013-11-18 21:38:54

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

3 个答案:

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

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

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