📜  在Python中从列表中随机选择元素而不重复

📅  最后修改于: 2022-05-13 01:54:38.161000             🧑  作者: Mango

在Python中从列表中随机选择元素而不重复

Python 在random模块中的内置模块用于处理随机数据。 random模块提供了各种方法来从列表、元组、集合、字符串或字典中随机选择元素,而无需任何重复。以下是一些描述从列表中随机选择元素而不重复的方法:

方法一:使用 random.sample()

random模块中使用sample()方法。 sample()是 random 模块的内置方法,它将选择的序列和数量作为参数,并返回从序列中选择的特定长度的项目列表,即列表、元组、字符串或集合。它用于从项目列表中随机选择而不进行任何替换。
示例 1:

# importing the required module
import random
  
# list of items
List = [10, 20, 30, 40, 50, 40,
        30, 20, 10]
  
# using the sample() method
UpdatedList = random.sample(List, 3)
  
# displaying random selections from 
# the list without repetition
print(UpdatedList)

输出:

[50, 20, 10]

我们也可以对数字序列使用sample()方法,但是,选择的数量应该大于序列的大小。
示例 2:

# importing the required module
import random
  
# using the sample() method on a
# sequence of numbers
UpdatedList = random.sample(range(1, 100), 5)
  
# displaying random selections without
# repetition
print(UpdatedList)

输出:

[51, 50, 97, 22, 6]

方法 2:使用 random.choices()

使用random库中的choices( choices()方法, choices()方法需要两个参数列表和k(选择数)从列表中返回多个随机元素并进行替换。但是,我们需要将列表转换为集合以避免元素重复。
示例 1:

# importing the required module
import random
  
# converting the list into a set
Set = set([10, 20, 30, 40, 50, 40,
          30, 20, 10])
  
# using the choices() method on the 
# given dataset
UpdatedList = random.choices(list(Set), k = 3)
  
# displaying random selections without 
# repetition
print(UpdatedList)

输出:

[30, 20, 40]

如果choices()方法应用于一个唯一数字的序列,那么只有当k参数(即选择的数量)应该大于列表的大小时,它才会返回一个唯一随机选择的列表。
示例 2:

# importing the required module
import random
  
# converting the list into set
List = [i for i in range(1, 100)]
  
# using the choices() method on a
# sequence of numbers
UpdatedList = random.choices(List, k = 5)
  
# displaying random selections without
# repetition
print(UpdatedList)

输出:

[46, 32, 85, 12, 68]

方法 3:使用 random.choice()

random模块中使用choice()方法, choice()方法从列表、元组或字符串中返回单个随机项。
下面是在项目列表中使用choice()方法的程序。
示例 1:

# importing the required module
import random
  
# list of items
List = [10, 20, 30, 40, 50, 40, 
        30, 20, 10]
  
# using the choice() method to return a
# single item from the dataset
print(random.choice(List))

输出:

20

下面是一个程序,其中选择方法用于数字序列。
示例 2:

# importing the required module
import random
  
# using the choice() method to return a
# single item from the dataset
print(random.choice(range(1, 100)))

输出:

56