方法1:
from random import randint,sample
#sample('abcdef',3)#加入只有6個球員,sample函數是隨機取出3個球員
#sample('abcdef',randint(3,6))#每組進球球員的數目也是隨機的。
s1={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
s2={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
s3={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
res=[]
for k in s1:
if k in s2 and k in s3:
res.append(k)
方法1執行效率並不高,我們可以用另外一種集合的操作,如果遇到多輪操作,效率更慢
方法2:
from random import randint,sample
#sample('abcdef',3)#加入只有6個球員,sample函數是隨機取出3個球員
#sample('abcdef',randint(3,6))#每組進球球員的數目也是隨機的。
s1={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
s2={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
s3={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
res=s1.viewkeys() & s2.viewkeys() & s3.viewkeys()#如果是前3輪可以用這種方法
方法3:如果是前n輪的話可以用map函數和reduce函數來做
from random import randint,sample
#sample('abcdef',3)#加入只有6個球員,sample函數是隨機取出3個球員
#sample('abcdef',randint(3,6))#每組進球球員的數目也是隨機的。
s1={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
s2={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
s3={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
#map(dict.viewkeys(),[s1,s2,s3])
reduce(lambda a,b:a&b ,map(dict.viewkeys(),[s1,s2,s3]))