使用itertools.product在Python中从for循环输出创建列表

0 投票
1 回答
693 浏览
提问于 2025-04-18 09:31

我的目标是用Python创建一副扑克牌的列表。我正在使用itertools.product。下面的代码可以生成正确的列表,但它只能在循环内部工作。

我该如何在循环外部存储和使用这个列表呢?

在循环内部打印列表:

#CARDS#
import itertools
rank = ["2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A"]
suit = ["h", "d", "s", "c"]

for card in itertools.product(rank, suit):
    card_deck = card[0] + card[1]
    print card_deck

输出:

2h 2d 2s 2c 3h 3d 3s 3c 4h 4d 4s 4c 5h 5d 5s 5c 6h 6d 6s 6c 7h 7d 7s 7c 8h 8d 8s 8c 9h 9d 9s 9c Th Td Ts Tc Jh Jd Js Jc Qh Qd Qs Qc Kh Kd Ks Kc Ah Ad As Ac

在循环外部打印列表:

for card in itertools.product(rank, suit):
    card_deck = card[0] + card[1]
print card_deck

输出:

Ac

1 个回答

2

问题是,当你完成循环后,card_deck 里仍然保留着最后一个值。如果你想要所有的值,就需要把它们存储到某个地方……也许可以用一个列表:

card_deck = []
for card in itertools.product(rank, suit):
    card_deck.append(card[0] + card[1])

print card_deck

而且这看起来非常适合用列表推导式来实现:

card_deck = [card[0] + card[1] for card in itertools.product(rank, suit)]

撰写回答