鱼C论坛

 找回密码
 立即注册
查看: 2230|回复: 3

无语,求解 问问,

[复制链接]
发表于 2021-10-27 20:50:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
主要问题,就是我想从一个列表中随机的抽取一个元素,假如一个列表有5个元素那么我随机抽取一个元素,抽取5次结束,并且要保证每次取出来的元素不能重复有什么具体的方法吗。


或者就是如何随机的从列表中取出一个元素,并把这个元素添加到一个新的列表中,并且把这个元素从此列表中删去。

两个问题解决哪一个都行,我上遍各种网站,真的搜不到我想要的答案呀!!

求大神带飞。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 21:30:26 | 显示全部楼层
本帖最后由 jackz007 于 2021-10-27 21:32 编辑
import random

d = [1 , 2 , 3 , 4 , 5]
e , k = d[:] , len(d)
while len(e):
    x = e[random . randint(0 , len(e) - 1)]
    e . remove(x)
    print(x)
    运行实况:
D:\00.Excise\Python>python x.py
3
2
5
4
1

D:\00.Excise\Python>python x.py
3
5
1
2
4

D:\00.Excise\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-10-27 21:32:02 | 显示全部楼层
本帖最后由 myqf123 于 2021-10-27 22:20 编辑

import random as r

list1 = ['鱼C小师妹','小甲鱼','稚辉君','不二如是','老王来也']
list2 = []
for i in range(5):
    name = list1.pop(r.randint(0,len(list1)-1))      #len(list1-1) 不减 1 的话,len(list1)有可能是5,pop(5)会
    list2.append(name)                                      #超出索引范围
    print(name)
print(list2)
print('-'*60)

结果:    多运行几次,试试就知道了,每次都不一样哦!
小甲鱼
老王来也
不二如是
鱼C小师妹
稚辉君
['小甲鱼', '老王来也', '不二如是', '鱼C小师妹', '稚辉君']
------------------------------------------------------------
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-10-27 21:41:54 | 显示全部楼层
Python
import random
arr = ['a', 'b', 'c', 'd', 'e']
res = []

while True:
    if len(res) == len(arr):
        break
    x = random.choice(arr)
    if x in res:
        continue
    res.append(x)

print(*res)
c d e b a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-4 14:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表