Python 如何检查列表中的多个元素是否等于一个变量?
我正在尝试制作一副洗牌扑克牌,为了做到这一点,我必须检查生成的扑克牌是否与之前的扑克牌相同。到目前为止,我已经尝试过:Python 如何检查列表中的多个元素是否等于一个变量?,python,list,Python,List,我正在尝试制作一副洗牌扑克牌,为了做到这一点,我必须检查生成的扑克牌是否与之前的扑克牌相同。到目前为止,我已经尝试过: for i in range(51): a=card() while(deck[:i]==a): a=card() deck[i]=a 卡片是生成随机卡片的函数 我认为问题出在[:I] 另外,列表中已经有52个元素,它们都被设置为“空”要回答您的问题,您可以这样做: for i in range(51): a = card() while a in d
for i in range(51):
a=card()
while(deck[:i]==a):
a=card()
deck[i]=a
卡片是生成随机卡片的函数
我认为问题出在[:I]
另外,列表中已经有52个元素,它们都被设置为“空”
要回答您的问题,您可以这样做:
for i in range(51):
a = card()
while a in deck:
a = card()
deck[i] = a
您可以在deck中使用a测试成员身份,因为您说过deck已初始化为空,所以您不必检查第i个元素,因为在i之后的元素肯定不包含a
然而,有一种更好的方法来创建一副洗牌牌:使用ctj232所说的random.shuffle
>>> import random
>>> l = [1, 2, 3, 4, 5]
>>> random.shuffle(l)
>>> l
[3, 5, 4, 2, 1]
按顺序列出所有52张牌,制作自己的类或整数,然后使用随机库将它们洗牌 您还可以执行以下操作:
import random
cards = [ i for i in range(52)]
curentPosition = [ i for i in range(52)]
nextPosition = [ i for i in range(52)]
print('Positions before shufle:\n',curentPosition)
for i in cards:
randomPos = random.choice(nextPosition)
curentPosition[i] = randomPos
nextPosition.remove(randomPos)
print('Positions after shufle\n',curentPosition)
使用random.shuffle
绝对是解决您的问题的最佳方法,正如另一个答案所解释的,但要回答您的原始问题:
要检查列表中的多个元素是否等于一个变量,可以使用列表中的变量
语法:
my_list = [51,47,2,29,6]
if 51 in my_list:
print("51 is already selected")
else:
print("51 isn't in my_list")
要将此应用于现有代码,请执行以下操作:
for i in range(51):
a=card()
while(a in deck):
a=card()
deck[i]=a
为什么不建立一个所有牌的列表,然后在代表牌组的列表上调用random.shuffle
?因此我使用两个while循环(一个用于数字,一个用于套装)创建列表,然后如何使用random.shuffle?一旦你有了所有牌的列表,假设你称之为deck
,只需使用random.shuffle(deck)
。你也可以在这里查看文档:这解决了OP面临的相同问题,但没有回答他的特定问题。至少回答这个问题,然后提供替代方案。