将 int 列表和字符串列表制作成元组列表 (int,string)

make a list of int and a list of string into a list of tuple (int,string)

我有一个列表 [1,2,3,...,13] 和一个列表 ['clubs','hearts,'spades','diamonds']。我如何制作一个看起来像......的元组列表 [(1,hearts),(1,clubs),(1,spades),(1,diamonds),(2,hearts)... 等等?

我试过使用列表理解,但无法弄清楚。

来自Python docs,

rank = [1, 2, 3]
suit = ['clubs', 'hearts', 'spades']
card = [(a, b) for a in rank for b in suit]

另一个解决方案使用 product from itertools

from itertools import product
rank = range(1,14)
suit = ['clubs','hearts','spades','diamonds']
print( list(product(rank, suit)) )

你得到:

[(1, 'clubs'), (1, 'hearts'), (1, 'spades'), (1, 'diamonds'), (2, 'clubs'), (2, 'hearts'), (2, 'spades'), (2, 'diamonds'), (3, 'clubs'), (3, 'hearts'), (3, 'spades'), (3, 'diamonds'), (4, 'clubs'), (4, 'hearts'), (4, 'spades'), (4, 'diamonds'), (5, 'clubs'), (5, 'hearts'), (5, 'spades'), (5, 'diamonds'), (6, 'clubs'), (6, 'hearts'), (6, 'spades'), (6, 'diamonds'), (7, 'clubs'), (7, 'hearts'), (7, 'spades'), (7, 'diamonds'), (8, 'clubs'), (8, 'hearts'), (8, 'spades'), (8, 'diamonds'), (9, 'clubs'), (9, 'hearts'), (9, 'spades'), (9, 'diamonds'), (10, 'clubs'), (10, 'hearts'), (10, 'spades'), (10, 'diamonds'), (11, 'clubs'), (11, 'hearts'), (11, 'spades'), (11, 'diamonds'), (12, 'clubs'), (12, 'hearts'), (12, 'spades'), (12, 'diamonds'), (13, 'clubs'), (13, 'hearts'), (13, 'spades'), (13, 'diamonds')]