range
list
在python3中不返回a ,因此range(2, 10) + ["J", "Q", "K", "A"]
不起作用,但是list(range(2, 10)) + ["J", "Q", "K", "A"]
可以。您还可以itertools.chain
用来串联可迭代对象:
from itertools import chain
chain(range(2, 10), ["J", "Q", "K", "A"])
# or even shorter:
chain(range(2, 10), "JQKA") # as strings themselves are iterables
# so this comprehension will work
deck = [
(value, suit)
for value in chain(range(2, 10), "JQKA")
for suit in "HCDS"
]
嵌套的理解当然会构成笛卡尔积,您也可以将util用于以下方面:
from itertools import product
deck = list(product(chain(range(2, 10), "JQKA"), "HCDS"))