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

时间:2017-08-02 19:09:52

标签: python list

我正在尝试制作一张洗牌的扑克牌,为了做到这一点,我必须检查生成的牌是否与以前的牌相同。到目前为止,我已经尝试过这个:

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

卡是生成随机卡的功能 我认为问题出在[:i] 附:该列表已有52个元素,它们全部设置为"空"

3 个答案:

答案 0 :(得分:4)

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

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

您可以使用a in deck测试会员资格,因为您说该套牌已初始化为空,因此您不必检查第i个元素,因为我肯定会检查后面的元素不会包含一个。

然而,有一种更好的方法来创建一个洗牌的牌:使用random.shuffle作为ctj232说。

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

制作一个列表,按顺序代表所有52张卡片,制作自己的类或整数,然后使用random库来重新排列它们。

答案 1 :(得分:0)

您还可以执行以下操作:

    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)

答案 2 :(得分:0)

使用random.shuffle绝对是解决问题的最佳方式,正如其他答案所解释的那样,但回答原来的问题:

要检查列表的多个元素是否等于变量,可以使用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