鱼C论坛

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

无语,求解 问问,

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

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

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

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


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

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

求大神带飞。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  2. d = [1 , 2 , 3 , 4 , 5]
  3. e , k = d[:] , len(d)
  4. while len(e):
  5.     x = e[random . randint(0 , len(e) - 1)]
  6.     e . remove(x)
  7.     print(x)
复制代码

    运行实况:
  1. D:\00.Excise\Python>python x.py
  2. 3
  3. 2
  4. 5
  5. 4
  6. 1

  7. D:\00.Excise\Python>python x.py
  8. 3
  9. 5
  10. 1
  11. 2
  12. 4

  13. D:\00.Excise\Python>
复制代码
小甲鱼最新课程 -> https://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小师妹', '稚辉君']
------------------------------------------------------------
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

  4. while True:
  5.     if len(res) == len(arr):
  6.         break
  7.     x = random.choice(arr)
  8.     if x in res:
  9.         continue
  10.     res.append(x)

  11. print(*res)
复制代码
  1. c d e b a
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 16:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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