接下來(lái)我們看元組怎么來(lái)做關(guān)系運(yùn)算。
假設(shè)現(xiàn)在有兩個(gè)人,和你的女朋友,你們兩個(gè)人可能有相同的愛(ài)好,也有各自不同的愛(ài)好。
我現(xiàn)在定義兩個(gè)列表來(lái)存你們的愛(ài)好,假設(shè)愛(ài)好1是你女朋友的愛(ài)好,愛(ài)好2是你的。
hobbies1 = ['吃飯', '睡覺(jué)', '看書(shū)', '鋼琴', '跳舞', '游泳']
hobbies2 = ['吃飯', '睡覺(jué)', '打游戲', '追劇', '健身']
看出什么了嗎?這就是一個(gè)女神和一個(gè)屌絲的差別。 開(kāi)個(gè)玩笑~!
現(xiàn)在我的需求是,你要用代碼找出這兩個(gè)人共同的愛(ài)好。當(dāng)然我這里用的是列表來(lái)存,你可以用元組,字典都行。
現(xiàn)在我們要找出這兩個(gè)人的共同愛(ài)好,那怎么做呢?
是不是可以用for循環(huán)遍歷一個(gè)列表,然后依次判斷每一個(gè)值,是否存在于另一個(gè)列表里面?
直接試試看。
for i in hobbies 1:
這行代碼就拿到了hobbies1里的每一個(gè)值了。然后就可以做判斷了。
for i in hobbies 1:
if i in hobbies 2:
然后我在前面定義一個(gè)空列表。然后把兩個(gè)人共同的愛(ài)好添加進(jìn)去。最后打印這個(gè)both_like。
both_like = []
for i in hobbies1:
if i in hobbies2:
both_like.append(i)
print(both_like)
這樣就是嫌我們的需求了。
為什么要用列表和for循環(huán)這么做呢?應(yīng)該可以猜到了,一定有更加簡(jiǎn)單的方法來(lái)對(duì)比這種方法。
就是用集合的一個(gè)功能?,F(xiàn)在我把上面的兩個(gè)愛(ài)好用集合的方式,把這兩個(gè)人共同的愛(ài)好取出來(lái),這叫取交集。
hobbies1 = {'吃飯', '睡覺(jué)', '看書(shū)', '鋼琴', '跳舞', '游泳'}
hobbies2 = {'吃飯', '睡覺(jué)', '打游戲', '追劇', '健身'}
res=hobbies1 & hobbies2
print(res)
第三行代碼意思就是,我要取的元素在右邊這個(gè)愛(ài)好里,也在右邊這個(gè)愛(ài)好里,然后會(huì)有一個(gè)運(yùn)算結(jié)果。最后打印一下這個(gè)res。
運(yùn)算結(jié)果和上面for循環(huán)一樣,只是for循環(huán)用了5行代碼,而取交集只用了2行代碼。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 集合類型2