Python 列表和 for 循环

Python list and for loop

我希望此代码打印 spade:A spade:2 等等,直到 heart:K。
但它只做 heart:A 到 heart:K。
我应该怎么做?

symbols = ["spade", "clover", "diamond", "heart"]
numbers = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",       "K"]
cards = {}

for num in numbers:
    for symbol in symbols:
        cards[num] = symbol

print cards

您正在很好地迭代符号,但是当您在第二个循环中遍历数字时,您实际上是在替换前一个循环设置的值,因此您只剩下最后一个循环的值,并且所有内容都被替换了.这意味着 cards["A"] 值在循环中设置了 4 次,最后一次 "heart" 被保留。所有其他索引都发生了同样的事情。

问题是您没有以正确的方式迭代,因此您没有追加到列表中。正确的做法是

symbols = ["spade", "clover", "diamond", "heart"]
numbers = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",         "K"]
cards = []

for j in range(len(symbols)):
    for i in range(len(numbers)):
       cards.append(str(symbols[j]+':'+str(numbers[i])))

print cards

输出:

['spade:A', 'spade:2', 'spade:3', 'spade:4', 'spade:5', 'spade:6', 'spade:7',  'spade:8', 
'spade:9', 'spade:10', 'spade:J', 'spade:Q', 'spade:K', 'clover:A', 'clover:2',
'clover:3', 'clover:4', 'clover:5', 'clover:6', 'clover:7', 'clover:8', 'clover:9',
'clover:10', 'clover:J', 'clover:Q', 'clover:K', 'diamond:A', 'diamond:2', 'diamond:3',
'diamond:4', 'diamond:5', 'diamond:6', 'diamond:7', 'diamond:8', 'diamond:9', 'diamond:10',
'diamond:J', 'diamond:Q', 'diamond:K', 'heart:A', 'heart:2', 'heart:3', 'heart:4',
'heart:5', 'heart:6', 'heart:7', 'heart:8', 'heart:9', 'heart:10', 'heart:J', 'heart:Q', 'heart:K']

使用 Ipython Notebook 在 python 2.7

中制作

希望对您有所帮助。

使用您的 itertools 工具箱

import itertools

symbols = ["spade", "clover", "diamond", "heart"]
numbers = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",       "K"]

combinations = itertools.product(symbols, numbers)

cards = ["{}:{}".format(suit, rank) for suit,rank in combinations]

这将为您提供列表:

['spade:A',
 'spade:2',
 'spade:3',
 'spade:4',
 'spade:5',
 'spade:6',
 'spade:7',
 'spade:8',
 'spade:9',
 'spade:10',
 'spade:J',
 'spade:Q',
 'spade:K',
 'clover:A',
 'clover:2',
 'clover:3',
 'clover:4',
 'clover:5',
 'clover:6',
 'clover:7',
 'clover:8',
 'clover:9',
 'clover:10',
 'clover:J',
 'clover:Q',
 'clover:K',
 'diamond:A',
 'diamond:2',
 'diamond:3',
 'diamond:4',
 'diamond:5',
 'diamond:6',
 'diamond:7',
 'diamond:8',
 'diamond:9',
 'diamond:10',
 'diamond:J',
 'diamond:Q',
 'diamond:K',
 'heart:A',
 'heart:2',
 'heart:3',
 'heart:4',
 'heart:5',
 'heart:6',
 'heart:7',
 'heart:8',
 'heart:9',
 'heart:10',
 'heart:J',
 'heart:Q',
 'heart:K']