作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个很小的 Python 程序,它需要为我正在组织的一些小组工作生成随机对。我需要确保人和对不会出现两次。
这是我到目前为止所写的。我感觉很接近,但不太知道如何解决它。
我从两个 .txt 文件中获得了两个我需要配对的人员列表,它们是随机生成的,没有问题。但我在输出中得到重复。
我目前正在创建列表并检查它们是否在该列表中,但有没有更简单的方法?
import random
def split_file(file_name):
text = open(file_name)
line = text.read()
result = line.split("\n")
return result
mentors = split_file(file_name="mentors.txt")
mentees = split_file(file_name="mentees.txt")
def randomiser(group):
random_member = random.choice(group)
return random_member
pairings = []
mentees_list = []
mentors_list = []
for i in range(20):
mentee = randomiser(mentees)
if mentee not in mentees_list:
mentees_list.append(mentee)
mentor = randomiser(mentors)
if mentor not in mentors_list:
mentees_list.append(mentee)
pair = mentee + ", " + mentor
if pair not in pairings:
pairings.append(pair)
print(pair)
最佳答案
使用 random.shuffle
和 zip
您可以快速随机配对两个列表:
import random
mentors = ['a', 'b', 'c', 'd', 'e']
mentees = [1, 2, 3, 4, 5]
random.shuffle(mentors)
random.shuffle(mentees)
pairs = [*zip(mentors, mentees)]
输出:
[('b', 5), ('c', 1), ('a', 2), ('d', 4), ('e', 3)]
关于python - 随机对生成器 : How to stop people coming up multiple times?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64032024/
我是一名优秀的程序员,十分优秀!