列表随机取2-元组列表

Posted eggplant-is-me

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表随机取2-元组列表相关的知识,希望对你有一定的参考价值。

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

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

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

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

以上是关于列表随机取2-元组列表的主要内容,如果未能解决你的问题,请参考以下文章

Python 元组+集合+随机

Python面试必考重点之列表,元组和字典第四关——编写一个函数(不要使用python模块的函数),打乱列表元素的顺序/如何对列表元素进行随机排列

python 生成包含100个两位数随机整数的元组

从列表中取随机数

在一个列表中随机取指定个数的元素

Python random模块