繁体   English   中英

如何检查列表中的多个元素是否等于一个变量?

[英]How do I check if multiple elements of a list are equal to a variable?

我正在尝试制作一个经过改组的扑克牌,为此,我必须检查所生成的纸牌是否等于先前的纸牌。 到目前为止,我已经尝试过了:

for i in range(51):
a=card()
while(deck[:i]==a):
    a=card()
deck[i]=a

卡是生成随机卡的函数,我认为问题出在[:i] PS中。列表已经有52个元素,它们都被设置为“空”

要回答您的问题,您可以执行以下操作:

for i in range(51):
    a = card()
    while a in deck:
        a = card()
    deck[i] = a

您可以使用a in deck来测试成员资格a in deck因为您说卡座被初始化为空,因此您不必检查第i个元素,因为我之后的元素肯定不会包含a。

但是,还有一种更好的方法来创建random.shuffle组合的纸牌:使用random.shuffle所说的random.shuffle。

>>> import random
>>> l = [1, 2, 3, 4, 5]
>>> random.shuffle(l)
>>> l
[3, 5, 4, 2, 1]

制作一个列表,按顺序代表所有52张卡,制作自己的类或只是整数,然后使用random库将它们洗牌。

您还可以执行以下操作:

    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绝对是解决问题的最佳方法,但可以回答您的原始问题:

要检查列表中的多个元素是否等于一个变量,可以variable in list语法中使用该variable in list

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM