-1
我是Python新手,无法将函数转换为列表理解。修真涉及value
功能,其中包含类如下:加入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和list解析:
def value(self):
result = [x += y for x = Card.values[y.rank] for y in self.cards]
这是梦幻般的,它完美的作品,似乎不是在这种情况下,用列表更好地理解。为了我自己的缘故,你是否也可以向我展示如何将它作为列表理解来完成? – Cristian
@Cristian List Comprehension用于创建列表,但您只是试图对值进行求和。 – thefourtheye
非常感谢您的帮助。等待接受。 – Cristian