疑問(wèn)點(diǎn):
日常工作中,面對(duì)list,字符串中重復(fù)的數(shù)據(jù),除了進(jìn)行循環(huán)外,怎么快速進(jìn)行去重?
帶著這樣的問(wèn)題,我們今天來(lái)認(rèn)識(shí)下python的內(nèi)置方法set()
Step1:
我們先看下set方法源碼:

? ? 可以看出:
? ??????set()中輸入?yún)?shù)一定要為iterable,那么在python中有哪些類型是可以iterable的呢?
? ? ? ? set()返回結(jié)果為是新的一個(gè)無(wú)序不重復(fù)元素集,大家可以打印下set()的type類型為<class 'set'> ,并且不改變?cè)瓉?lái)的值
? ? Step2:
? ? ? ? 接著回來(lái)上面的問(wèn)題,有哪些類型的數(shù)據(jù)可以iterable呢?
? ? ? ? 首先,可以直接作用于 for 循環(huán)的數(shù)據(jù)類型有以下幾種:
????????????一類是集合數(shù)據(jù)類型,如 list、tuple、dict、set、str 等;
????????????一類是 generator,包括生成器和帶 yield 的 generator function。
? ? ? ? 然后,判斷一個(gè)對(duì)象是否可iterable,可以使用?isinstance()?判斷一個(gè)對(duì)象是否是Iterable對(duì)象:

? ? ? ? Step3:
? ? ? ? ? ? 有了上述了解后,我們看下set()具體使用場(chǎng)景:(具體通過(guò)兩個(gè)list進(jìn)行比較)
? ? ? ? ? ? a)使用運(yùn)算符(取交集、并集、兩個(gè)list各自的差集)

? ? ? ? ? ? ? ? b)使用set()集合的函數(shù)

總結(jié):
? ? ? ? set()可以很好的幫我們?nèi)ソ鉀Q遇到多個(gè)集合的比較的問(wèn)題,也啟發(fā)我們?cè)谑褂米罨A(chǔ)的for循環(huán),還有其他之外更好的方法去提升和改善我們的代碼