在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ 小白求助:python顯示隨機(jī)后剩余的元素

小白求助:python顯示隨機(jī)后剩余的元素

我想用python實(shí)現(xiàn)如下一個(gè)需求,請(qǐng)大神幫忙:
一個(gè)序列:
team=('1','2','3','4','5','6','7')
隨機(jī)選擇3個(gè):
r=random.sample(team,3)
我還想在隨機(jī)后剩下的元素里再隨機(jī)選擇2個(gè),這個(gè)怎么實(shí)現(xiàn)呀?
請(qǐng)大神幫忙忙,十分感謝

回答
編輯回答
憶當(dāng)年

把已經(jīng)選擇的元素剔除了,再做一遍 random.sample() 便可。當(dāng)序列(集合)含有重復(fù)的元素時(shí),應(yīng)該使用序列下標(biāo)作為 random.sample() 的參數(shù),而不是序列本身。

請(qǐng)參考下面的代碼

# -*- coding: utf-8 -*-
import random


team = ('1', '2', '3', '4', '5', '6', '7')


def f1():
    # 方法一:(假定沒(méi)有重復(fù)元素)遍歷集合,將尚未選擇的元素組成新集合。
    r1 = random.sample(team, 3)
    r2 = []
    for item in team:
        if item not in r1:
            r2.append(item)
    print('result1: %s' % random.sample(r2, 2))


def f2():
    # 方法二:(假定沒(méi)有重復(fù)元素)使用集合 set,計(jì)算差集。
    r1 = random.sample(team, 3)
    r2 = tuple(set(team) - set(r1))
    print('result2: %s' % random.sample(r2, 2))


def f3():
    # 方法三:(假定有重復(fù)元素)隨機(jī)選擇集合元素的下標(biāo),而不是元素值。
    index_r1 = random.sample(range(len(team)), 3)
    # r1 = [team[i] for i in index_r1]
    remain_index = tuple(set(range(len(team))) - set(index_r1))
    index_r2 = random.sample(remain_index, 2)
    r2 = [team[i] for i in index_r2]
    print('result3: %s' % r2)


if __name__ == '__main__':
    f1()
    f2()
    f3()
2017年9月18日 20:26
編輯回答
爆扎

這個(gè)問(wèn)題其實(shí)算是一個(gè)偽需求,先隨機(jī)3個(gè)再在余下的元素里隨機(jī)2個(gè),其實(shí)等同于隨機(jī)5個(gè),先取3個(gè)再取2個(gè)

2018年4月20日 22:08