2014-06-12 88 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