Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于添加的Python列表理解_Python_List Comprehension - Fatal编程技术网

用于添加的Python列表理解

用于添加的Python列表理解,python,list-comprehension,Python,List Comprehension,我是Python新手,无法将函数转换为列表。理解涉及值函数,其包含类如下: class Card(object): # Lists containing valid candidates for a card's rank and suit. suits = [None, "spade", "club", "heart", "diamond"] ranks = [None, "ace", "two", "three", "four", "five", "six",

我是Python新手,无法将函数转换为列表。理解涉及
函数,其包含类如下:

class Card(object):

    # Lists containing valid candidates for a card's rank and suit.
    suits = [None, "spade", "club", "heart", "diamond"]
    ranks = [None, "ace", "two", "three", "four", "five", "six", 
             "seven", "eight", "nine", "ten", "jack", "queen", "king"]

    # Dictionary containing the ranks and their associative values.
    values = {None:0, "ace":1, "two":2, "three":3, "four":4,
              "five":5,"six":6,"seven":7, "eight":8,"nine":9,
              "ten":10, "jack":10, "queen":10, "king":10}

    def __init__(self, rank=None, suit=None):
        """Constructor."""
        if rank not in self.ranks:
            raise ValueError("Invalid rank.")
        if suit not in self.suits:
            raise ValueError("Invalid suit.")
        self.rank = rank
        self.suit = suit

    def __str__(self):
        """A string representation of the Card."""
        return "{0}:{1}".format(self.rank, self.suit)
另一个类创建卡对象列表,并定义以下函数:

def value(self):
    """Returns an int value containing the summed values of the hand's cards."""
    result = 0
    for card in self.cards:
        result += Card.values[card.rank]
    return result
据我所见,
value
函数是列表理解的候选函数,但我无法让它工作。我相信下面的内容是正确的,但我仍然会遇到语法错误,我不知道我做错了什么。请注意,我不熟悉Python并列出理解:

def value(self):
    result = [x += y for x = Card.values[y.rank] for y in self.cards]
您可以简单地使用如下函数和生成器表达式

def value(self):
    return sum(Card.values[card.rank] for card in self.cards)
def value(self):
    return sum([Card.values[card.rank] for card in self.cards])
如果您想使用列表理解,那么您可以简单地使用列表理解语法转换生成器表达式,如下所示

def value(self):
    return sum(Card.values[card.rank] for card in self.cards)
def value(self):
    return sum([Card.values[card.rank] for card in self.cards])

这太棒了,它工作得非常完美,似乎比在这种情况下使用列表理解更好。为了我自己,你能告诉我如何做列表理解吗?@Cristian list comprehension用于创建列表,但你只是尝试对值求和。只是想根据第一条评论增加清晰度。您使用的是列表理解:它是sum中的列表。Sum只添加列表的组件,列表理解返回列表。