Python 如何在使用random.choice()后从列表中删除项目?

Python 如何在使用random.choice()后从列表中删除项目?,python,python-3.x,random,Python,Python 3.x,Random,我有一个带有列表的Python脚本,我试图从列表中获取随机项并将它们放入变量中,但我注意到,当我运行程序几次(大约20次左右)后,它最终会打印出两个相同的项,如“apples” while循环每次都应使变量包含唯一值,但它不包含唯一值。而in(列表[0]、列表[1]、列表[2]、列表[3]、列表[4]、列表[5]、列表[6]):相当于而in列表:。由于a仅包含列表中的值,因此该条件始终为true,循环将永远不会结束,并且您将永远无法到达print语句 要从一个集合中选择多个唯一的随机项,请使用s

我有一个带有列表的Python脚本,我试图从列表中获取随机项并将它们放入变量中,但我注意到,当我运行程序几次(大约20次左右)后,它最终会打印出两个相同的项,如“apples”

while循环每次都应使变量包含唯一值,但它不包含唯一值。

而in(列表[0]、列表[1]、列表[2]、列表[3]、列表[4]、列表[5]、列表[6]):
相当于
而in列表:
。由于
a
仅包含列表中的值,因此该条件始终为true,循环将永远不会结束,并且您将永远无法到达print语句

要从一个集合中选择多个唯一的随机项,请使用
sample
而不是
choice

>>> list = ['apples','grapes','bannas','peaches','pears','oranges','mangos']
>>> a,b = random.sample(list, 2)
>>> a
'bannas'
>>> b
'grapes'
当a in(列表[0]、列表[1]、列表[2]、列表[3]、列表[4]、列表[5]、列表[6]):
相当于
而a in列表:
。由于
a
仅包含列表中的值,因此该条件始终为true,循环将永远不会结束,并且您将永远无法到达print语句

要从一个集合中选择多个唯一的随机项,请使用
sample
而不是
choice

>>> list = ['apples','grapes','bannas','peaches','pears','oranges','mangos']
>>> a,b = random.sample(list, 2)
>>> a
'bannas'
>>> b
'grapes'

上面的Kevins
sample
更好,但我认为这就是您尝试使用
choice
所做的:

import random

fruit = ['apples', 'grapes', 'bannas', 'peaches', 'pears', 'oranges', 'mangos']
a_fruit = random.choice(fruit)
b_fruit = random.choice(fruit)

while a_fruit == b_fruit:
    b_fruit = random.choice(fruit)

print("{} - {}".format(a_fruit, b_fruit))
几句话:

  • 列表
    是python的一个应用程序。千万不要把某件事列在清单上(或写下或删除)
  • 正如kevin提到的,while循环是无用的,并且将永远运行,因为它应该始终计算为true
Kevins
示例
以上更好,但我认为这就是您尝试使用
选项所做的:

import random

fruit = ['apples', 'grapes', 'bannas', 'peaches', 'pears', 'oranges', 'mangos']
a_fruit = random.choice(fruit)
b_fruit = random.choice(fruit)

while a_fruit == b_fruit:
    b_fruit = random.choice(fruit)

print("{} - {}".format(a_fruit, b_fruit))
几句话:

  • 列表
    是python的一个应用程序。千万不要把某件事列在清单上(或写下或删除)
  • 正如kevin提到的,while循环是无用的,并且将永远运行,因为它应该始终计算为true
      另一种选择:如果你不关心列表,我会使用
      pop
      ,如果你这样做,你可以复制一份,然后使用
      pop
      (我不知道你想如何使用列表)

      另一种方法是将你的列表置乱/洗牌,然后按顺序一个接一个地挑选项目

      random.shuffle(fruit_list)
      a = fruit_list[0]
      b = fruit_list[1]
      
      print(a + ' ' + b)
      
      使用pop,同样:

      random.shuffle(fruit_list)
      a = fruit_list.pop()
      b = fruit_list.pop()
      
      print(a + ' ' + b)
      

      另一种选择:如果你不在乎列表,我会使用
      pop
      ,如果你在乎,那么你可以复制一份,然后使用
      pop
      (我不知道你想如何使用列表)

      另一种方法是将你的列表置乱/洗牌,然后按顺序一个接一个地挑选项目

      random.shuffle(fruit_list)
      a = fruit_list[0]
      b = fruit_list[1]
      
      print(a + ' ' + b)
      
      使用pop,同样:

      random.shuffle(fruit_list)
      a = fruit_list.pop()
      b = fruit_list.pop()
      
      print(a + ' ' + b)
      

      感谢列表中的建议,我以后会记得的。kevin答案中的random.sample()似乎使while循环变得多余,但你是对的,这正是我试图用while循环完成的。感谢列表中的建议,我以后会记得的。random.sample()在kevin的回答中,似乎使while循环变得多余,但你是对的,这正是我试图用while循环完成的。如果你打算最终选择列表中的所有或甚至只是大多数项,请将其洗牌,并在末尾弹出项。如果你打算最终选择列表中的所有或甚至只是大多数项,将其洗牌,然后从末端弹出项目。