所以我有一个双重问题。我有selectedCards
列表,其中包含2个元素 - 卡片等级和套装,格式为:['6', 'c']
club = u"\u2663" # Unicode codepoint for club
newList = [club for i in selectedCards if i == 'c' else i]
我想将'c'更改为俱乐部的图形表示,但这个表达不起作用。我尝试了很多,但找不到什么是错的。它说:SyntaxError: invalid syntax
第二个问题,如果我删除else语句,那么它可以工作,但它不会输出我想要的内容,它看起来像这样:[u'\u2663']
,甚至认为打印(俱乐部)输出♣。
编辑:newList = [club if i == 'c' else i for i in selectedCards]
是正确的语法,感谢xtofl。
答案 0 :(得分:0)
或许你最好用dict:
symbols = {
'c': u"\u2663",
'h': u"....hearts",
...
}
newList = [symbols[card] for card in selectedCards]
(或者如果你想要发挥作用:
map( symbols.get, selectedCards )
)
至于第一个问题:cfr https://stackoverflow.com/a/4260304/6610
对于第二个,打印,问题:python只是给你一个'清单代表;如果你想要它的字符串形式,这对我来说就是这个诀窍:
print("".join(newList))
(提示:在包含所有这些逻辑的Card
类中代表你卡是明智的,有点像
class Card:
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
symbols = {'c': u"\u2663", ...}
def __str__(self):
return "".join([self.rank, Card.symbols[self.suit]])
)