要求
使用列表推导式生成一副扑克牌,花牌的分值为0.5
for循环
lst_color = ['黑桃', '梅花', '红桃', '方块']
lst_num = [i for i in range(1, 14)]
dct_poker = {1: 'A', 11: 'J', 12: 'Q', 13: 'K'}
lst_poker = []
for c in lst_color:
for n in lst_num:
lst_poker.append((c, dct_poker.get(n) or n, (n <= 10 and n) or 0.5))
lst_poker.append(('大王', '大王', 0.5))
lst_poker.append(('小王', '小王', 0.5))
推导式
lst_color = ['黑桃', '梅花', '红桃', '方块']
lst_num = [i for i in range(1, 14)]
dct_poker = {1: 'A', 11: 'J', 12: 'Q', 13: 'K'}
lst_poker = [(c, dct_poker.get(n) or n, (n <= 10 and n) or 0.5) for c in lst_color for n in lst_num]
lst_poker.extend([('大王', '大王', 0.5), ('小王', '小王', 0.5)])
单行代码
注意:这里不能使用extend。
逻辑运算的赋值请参考
list推导式请参考
lst_poker = list(
(c, n == 1 and 'A' or n == 11 and 'J' or n == 12 and 'Q' or n == 13 and 'K' or n, n <= 10 and n or 0.5)
for c in ['黑桃', '梅花', '红桃', '方块'] for n in
[i for i in range(1, 14)]) + [('大王', '大王', 0.5), ('小王', '小王', 0.5)]