Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查列表中的多个元素是否等于一个变量?_Python_List - Fatal编程技术网

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面临的相同问题,但没有回答他的特定问题。至少回答这个问题,然后提供替代方案。