如何解决在嵌套列表的每个列表中循环选择一个项目
list = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
我希望有一个循环,可以从列表的索引中为所有3个对象随机选择一个项目。因此,循环将开始并选择3,然后选择7,然后选择9。然后循环停止,不再继续拾取项目。我只想要3次重复 我已经做到了 (与:
for i in list:
item = list[0].pop((random.choice(list)[0])))
但是它不仅执行一次,而且会遍历第一个索引的所有项目(选择第一个),然后移至第二个,依此类推。
感谢您的帮助!
解决方法
您似乎在每次迭代中都为0
上的列表建立索引,这只会为您提供第一个内部列表中的随机值。使用random.choice
遍历列表,或使用map
:
list(map(random.choice,my_list))
# [3,8,11]
等效地:
[random.choice(i) for i in my_list]
根据评论,如果要删除从列表中随机选择的项目,请改用:
[i.pop(random.randint(0,len(i))) for i in my_list]
# [4,6,9]
print(my_list)
# [[1,2,3],[5,7,8],[10,11,12]]
,
这是我的代码:
print("before random sample",pos)
pos = random.sample(pos,len(pos))
print("after random sample",pos)
test = [i.pop(random.randint(0,len(i))) for i in pos]```
This is the output:
#before random sample [[1,3,4,5],[6,9,10],[11,12,13,14,15],[16,17,18,19,20]]
#after random sample [[6,[1,20]]
#.......
#test = [i.pop(random.randint(0,len(i))) for i in pos]
#IndexError: pop index out of range
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。