2014-06-12 61 views
0

我的目标是在python中创建一副纸牌列表。我正在使用itertools.product。下面的代码创建了正确的列表,但是它只能在for循环中使用。使用Python中的itertools.product在for循环的输出中创建一个列表

如何存储和使用for循环之外的列表?

打印列表内部循环:

#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 787-8 8C 9H 9D 787-9 9c中的Th Td的TS锝是Jh JD的js的Jc是Qh QD Qs的QC的Kh的Kd Ks的阿的Kc作为广告AC

打印列表外循环

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

输出:

AC

+0

对我的作品... – mgilson

+0

用同样的方法可以在任何循环中创建结果列表。还记得上一次使用循环创建列表吗?你还记得你当时做了什么吗? – user2357112

+0

推荐阅读:http://learnpythonthehardway.org –

回答

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)] 
+0

完美,谢谢! – koopertrooper