使用itertools.product在Python中从for循环输出创建列表
我的目标是用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)]