想问下各位大佬怎么删除列表的重复元素
要实现的功能是将列表L随机分成任意组数(元素不重复),想问下各位大佬,为什么我后面明明有做到删除重复值这个操作为什么输出还是会有重复值呢?import random
L1=['李思民','韦依婷','曹韵珮','侯丹玟','莫楚欣','许晓柔','蔡奕珊','李锦欣','黄婉瑶','黄懿祺']
L2=['黎潼欣','陈冬青','陈妮婷','林诗慧','杨沛怡','张芷焱','梁晓琪','黎焯婷','郑茹','黄东瑶']
L3=['张泠','潘欣怡','谢欣','刘美仪','刘洁曼','吴婉婷','欧阳琼凤','黄佳娜','邹奕璠','马彬彬']
L4=['黄晓茵','莫济航','孔繁深','林哲','陈少雄','陈树涛','谢锨佳','梁杰荣','许家铭','周博明']
L5=['罗泽鹏','陈兴','苏智坪','王泽畅','赵骏','姚慧煜','缪泽政','李文祥','杨帅','吕金龙','薛海鹏']
L = L1+L2+L3+L4+L5
A = [] # 空列表
b=1#计数器
R = random.randint(1,51) #产生一个随机数看看每组要有几个人
a = 51//R #计算需要分成几组
print(f'每组{R}人,要随机分成{a}组')
for i in L:
while b<a:
for i in range(a):
W = random.sample(L,R) #一次从列表L中抽取R人
if i not in A: #去除重复的元素
A.append(W)
b=b+1
print(A)
#这是输出
每组15人,要随机分成3组
[['刘美仪', '李思民', '陈树涛', '薛海鹏', '黄佳娜', '苏智坪', '莫楚欣', '姚慧煜', '吕金龙', '许晓柔', '王泽畅', '谢欣', '曹韵珮', '缪泽政', '李锦欣'], ['薛海鹏', '黄佳娜', '张芷焱', '梁杰荣', '李文祥', '周博明', '黄懿祺', '郑茹', '林诗慧', '吕金龙', '马彬彬', '潘欣怡', '许晓柔', '赵骏', '黎潼欣'], ['王泽畅', '刘美仪', '陈少雄', '周博明', '林哲', '杨沛怡', '谢欣', '侯丹玟', '欧阳琼凤', '苏智坪', '吴婉婷', '陈兴', '许晓柔', '陈冬青', '李文祥']]
set set 本帖最后由 傻眼貓咪 于 2021-12-16 19:12 编辑
import random
L1 = ['李思民', '韦依婷', '曹韵珮', '侯丹玟', '莫楚欣', '许晓柔', '蔡奕珊', '李锦欣', '黄婉瑶', '黄懿祺']
L2 = ['黎潼欣', '陈冬青', '陈妮婷', '林诗慧', '杨沛怡', '张芷焱', '梁晓琪', '黎焯婷', '郑茹', '黄东瑶']
L3 = ['张泠', '潘欣怡', '谢欣', '刘美仪', '刘洁曼', '吴婉婷', '欧阳琼凤', '黄佳娜', '邹奕璠', '马彬彬']
L4 = ['黄晓茵', '莫济航', '孔繁深', '林哲', '陈少雄', '陈树涛', '谢锨佳', '梁杰荣', '许家铭', '周博明']
L5 = ['罗泽鹏', '陈兴', '苏智坪', '王泽畅', '赵骏', '姚慧煜', '缪泽政', '李文祥', '杨帅', '吕金龙', '薛海鹏']
L = L1+L2+L3+L4+L5
a = random.sample(L, 15)
b = random.sample(, 15)
c = random.sample(, 15)
print(*a)
print(*b)
print(*c) qq1151985918 发表于 2021-12-16 18:17
set
楼主表达的问题是 50 人分三组,每组 15 人(意思就是还有 5 人落单),用 set反而复杂化代码 kogawananari 发表于 2021-12-16 18:35
set
楼主表达的问题是 50 人分三组,每组 15 人(意思就是还有 5 人落单),用 set反而复杂化代码 import random
L1=['李思民','韦依婷','曹韵珮','侯丹玟','莫楚欣','许晓柔','蔡奕珊','李锦欣','黄婉瑶','黄懿祺']
L2=['黎潼欣','陈冬青','陈妮婷','林诗慧','杨沛怡','张芷焱','梁晓琪','黎焯婷','郑茹','黄东瑶']
L3=['张泠','潘欣怡','谢欣','刘美仪','刘洁曼','吴婉婷','欧阳琼凤','黄佳娜','邹奕璠','马彬彬']
L4=['黄晓茵','莫济航','孔繁深','林哲','陈少雄','陈树涛','谢锨佳','梁杰荣','许家铭','周博明']
L5=['罗泽鹏','陈兴','苏智坪','王泽畅','赵骏','姚慧煜','缪泽政','李文祥','杨帅','吕金龙','薛海鹏']
L = L1+L2+L3+L4+L5
R = 5 #random.randint(1,51) #产生一个随机数看看每组要有几个人
A = []
a = 51//R #计算需要分成几组
print(f'每组{R}人,要随机分成{a}组')
random.shuffle(L)
for i in range(a):
A.append(L)
print(A)
这里考虑不够分组的舍去,如果把剩下的单做一组可以调整一下。
页:
[1]