列表随机取2-元组列表

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

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

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

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

posted on 2019-09-20 15:05  eggplant_is_me  阅读(179)  评论(0编辑  收藏  举报

导航