返回信息流如图,求大佬救救孩子吧[ema1]
这是一条镜像帖。来源:北邮人论坛 / python / #25303同步于 2020/10/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
问题求助
laviee
2020/10/23镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
第一个函数对list洗牌,然后按顺序两个为一对yield,走到结尾后再次洗牌;第二个函数一边抽一边用set去重(你这种纯模拟抽样的方式越到后面碰撞概率越大...)
这个方法不戳
【 在 DonaldTrump (唐纳德特朗普) 的大作中提到: 】
: 第一个函数对list洗牌,然后按顺序两个为一对yield,走到结尾后再次洗牌;第二个函数一边抽一边用set去重(你这种纯模拟抽样的方式越到后面碰撞概率越大...)
【 在 laviee 的大作中提到: 】
: 如图,求大佬救救孩子吧
元素本来就是不重复的,随机打乱后,两两结合返回就可以了。
[upload=1][/upload]
建表的时候同时生成字典,字典的key值可以是tuple元素排序后按某种标识符分割的string。每次list更新时先字典查询,没有就更新,否则跳过。
【 在 laviee (laviee) 的大作中提到: 】
: 如图,求大佬救救孩子吧[ema1][upload=1][/upload]
: --
【 在 wh1795902848 的大作中提到: 】
: 元素本来就是不重复的,随机打乱后,两两结合返回就可以了。
: [upload=1][/upload]
更新,这样用yield才更快。
def my_shuffle_choice(lst:list)->tuple:
max_idx = len(lst)-1
flag = 0
while(max_idx > 0):
random_exge_idx = random.randint(0, max_idx)
lst[random_exge_idx], lst[max_idx] = lst[max_idx], lst[random_exge_idx]
flag += 1
if(flag%2 == 0):
yield (lst[max_idx], lst[max_idx+1])
flag = 0
max_idx -= 1
import itertools
target_list=[]
for u1,u2 in itertools.combinations(source_list,2):
target_list.append((u1,u2))