除了使用remove()方法刪除元素以外,還可以使用discard()方法刪除元素,并且,和remove()不同的是,當(dāng)元素不存在時(shí),使用discard()并不會(huì)引發(fā)錯(cuò)誤,所以使用discard()是更加高效的一個(gè)方法。
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl']) name_set.discard('Jenny') print(name_set) # ==> set(['Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl']) name_set.discard('Jenny') print(name_set) # ==> set(['Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl']
和dict一樣,set也提供了clear()方法,可以快速清除set中的所有元素。
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl']) print(name_set) # ==> set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl']) name_set.clear() print(name_set) # ==> set([])
set提供方法判斷兩個(gè)set之間的關(guān)系,比如兩個(gè)集合set,判斷其中一個(gè)set是否為另外一個(gè)set的子集或者超集。
s1 = set([1, 2, 3, 4, 5]) s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 判斷s1是否為s2的子集 s1.issubset(s2) # ==> True # 判斷s2是否為s1的超集 s2.issuperset(s1) # ==> True
有時(shí)候需要判斷兩個(gè)集合是否有重合的地方,如果使用傳統(tǒng)的方法,需要使用for循環(huán)一個(gè)一個(gè)的去判斷,非常麻煩,set提供isdisjoint()
方法,可以快速判斷兩個(gè)集合是否有重合,如果有重合,返回False,否則返回True。
s1 = set([1, 2, 3, 4, 5]) s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9]) s1.isdisjoint(s2) # ==> False,因?yàn)橛兄貜?fù)元素1、2、3、4、5
已知兩個(gè)集合s1、s2,請(qǐng)判斷兩個(gè)集合是否有重合,如果有,請(qǐng)把重合的元素打印出來(lái)。
s1 = set([1, 2, 3, 4, 5]) s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
參考答案:
s1 = set([1, 2, 3, 4, 6, 8, 10]) s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9]) flag = s1.isdisjoint(s2) if not flag: for item in s1: if item not in s2: continue print(item)
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)