如何通过一个循环依次遍历多个列表?[重复]
问题内容:
这个问题已经在这里有了答案 :
一个接一个地遍历两个列表 (3个答案)
3年前关闭。
在 Python 3.6.3中, 有没有一种方法可以循环遍历一个列表?
例如:
deck = [(value, suit) for value in range(2, 11) +
["J", "Q", "K", "A"] for suit in ["H", "C", "D", "S"]]
(在这种情况下,我想在非面部卡之后循环遍历面部卡。)
为了澄清:上面的行抛出:
TypeError: unsupported operand type(s) for +: 'range' and 'list'
这是我的问题。
问题答案:
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"))