码迷,mamicode.com
首页 > 其他好文 > 详细

列表随机取2-元组列表

时间:2019-09-20 15:20:43      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:选择   有一个   另一个   随机选择   空间   内存   如何   list   问题   

? 在研究一个课题时,遇到了一个小问题,如何从一个list中随机取num个元组对,且不重复(前提,list中有足够多的元素)

? 一个简单的想法,将所有的元组对取出来(大概n*(n-1)/2)但是当list太大时,所有元组对也就更大,导致内存存不下。

? 另一个想法是,每次随机取出一对元素,然后符合要求就放到已选择的元组列表choosed_list中, 这样子也有一个问题,每次随机取,取到最后会导致不在choosed_list的元组越来越少,最后随机会找很久才能找到符合要求的边。

? 最后我的解决方法是元组拆开随机,每次先随机找到(a,b)中的a,然后对每一个list中的元素,保持一个choosed_b的列表(相当于一个二维的列表),找到a后,再从不在choosed_b[a],也不包括a的元素中随机选择一个,这样就可以保证不重复,且空间复杂度也不会很高,(需要找多少对,就相应需要多少空间)时间上也不会花很久时间。

列表随机取2-元组列表

标签:选择   有一个   另一个   随机选择   空间   内存   如何   list   问题   

原文地址:https://www.cnblogs.com/eggplant-is-me/p/11557318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!