Python-从数组中选择随机名称,不重复,直到选择完所有名称

Python-从数组中选择随机名称,不重复,直到选择完所有名称,python,arrays,random,repeat,Python,Arrays,Random,Repeat,我刚刚开始学习Python,所以如果这很容易,我道歉。我想从一组名称数组中生成一个随机名称,然后在选择所有名称并再次开始循环之前,不要重复该名称。下面的代码是我已经拥有的,这会生成随机名称,但重复正在发生 import random employee = ["adam", "Scott", "Michael", "Andrew", "Mark", "Fernando", "Faith", "Steve", "Lee", "Amani", "Liv", "Nick A", "James", "J

我刚刚开始学习Python,所以如果这很容易,我道歉。我想从一组名称数组中生成一个随机名称,然后在选择所有名称并再次开始循环之前,不要重复该名称。下面的代码是我已经拥有的,这会生成随机名称,但重复正在发生

import random

employee = ["adam", "Scott", "Michael", "Andrew", "Mark", "Fernando", "Faith", "Steve", "Lee", "Amani", "Liv", "Nick A", "James", "Jake", "Brett", "Graham", "Fraser", "Jacob", "Chelsea", "Phil", "George", "Charley", "Emma", "Steph"]
print(random.choice(employee))

您想使用随机。按原样洗牌

随机导入
雇员=[“亚当”、“斯科特”、“迈克尔”、“安德鲁”、“马克”、“费尔南多”、“费思”、“史蒂夫”、“李”、“阿曼尼”、“利夫”、“尼克A”、“詹姆斯”、“杰克”、“布雷特”、“格雷厄姆”、“弗雷泽”、“雅各布”、“切尔西”、“菲尔”、“乔治”、“查理”、“埃玛”、“斯蒂芬”]
#进行10轮随机选择
对于范围(10)内的i:
印刷品(一)
#以新的随机顺序洗牌列表
随机。洗牌(员工)
#随机打印一名员工,每轮不重复
对于员工中的随机_员工:
打印(随机打印)

两件事中的一件应该是可行的,非常相似:

(1) 复印一份清单;从副本中选择项目。每次选择项目时,请将其从列表中删除。清空列表后,制作新副本并继续

(2) 使用itertools中的洗牌操作为列表提供随机排列。重复一遍。当你到达终点时,得到一个新的随机排列。

你可以试试这个

import random

employee = ["adam", "Scott", "Michael", "Andrew", "Mark", "Fernando", "Faith", "Steve", "Lee", "Amani", "Liv", "Nick A", "James", "Jake", "Brett", "Graham", "Fraser", "Jacob", "Chelsea", "Phil", "George", "Charley", "Emma", "Steph"]

employeecopy = employee

while len(employeecopy) != 0:
  chosen = random.choice(employeecopy)
  employeecopy = list(set(employeecopy) - set([chosen]))
请在操作中查看它

您应该使用它来洗牌列表中的元素:

import random

employee = ["adam", "Scott", "Michael", "Andrew", "Mark", "Fernando", "Faith", "Steve", "Lee", "Amani", "Liv", "Nick A", "James", "Jake", "Brett", "Graham", "Fraser", "Jacob", "Chelsea", "Phil", "George", "Charley", "Emma", "Steph"]
random.shuffle(employee)
for i in employee:
    print(i)

您可以使用
random.shuffle()
将列表的顺序随机化,并根据需要多次重复该列表。

为什么不直接使用
random.shuffle(employee)
然后重复结果呢?您好,这是对列表进行无序排列并显示整个列表,我想一次显示一个列表项。@BrennanJenkins你是什么意思?这将逐个打印每个元素,而不是一次打印整个列表。
for
循环遍历列表中存储在
i
中的每个元素。抱歉,您是对的!在我采取下一步行动之前,这已经完成了我所需要的。谢谢:)@BrennanJenkins好消息!祝您的程序好运:)您好,这是洗牌列表并显示整个列表,我想一次显示一个列表项,然后在迭代结束时重新洗牌