1. 程式人生 > >python之集合及其方法---整理集

python之集合及其方法---整理集

date() 表示 括號 span 添加元素 hello 列表 print 不可變類

集合的定義:

由不同元素組成、一組無序排列的可hash值、集合中元素必須是不可變類型

  集合的定義方式:
  由大括號組成;
  每個元素用逗號分隔;
  元素書寫不是key-value形式;

集合是由不同元素組成,如果在集合中使用相同元素,會自動處理
例如:

s={1,2,3,3,44,33,33,4,4,5,5,7}
type(s)
print(s)
返回結果:
{33, 2, 3, 4, 5, 1, 7, 44}

集合是無序的:
例如:

s={a,h,o,n,b,d,c}
for item in s:
    print(item)
返回結果:
n
o
c
h
d
a
b

集合的書寫定義格式:
格式1:
  s={element1,element2,element3...}
  element都為不變類型

格式2:
  s=set(<可叠代類型>)
  可叠代類型:字符串、列表、元組、字典

例如:定義格式2

s=set([1,2,3,"hello"]) #遍歷列表,把每個元素當作集合中的一個值
print(s)
返回結果:
{1, 2, 3, hello}

s=set((1,2,3))
print(s)
返回結果:
{1, 2, 3}

s=set({k1:v1,k2:v2})  #以逗號分隔,遍歷字典,得到值後不再繼續遍歷
print(s) 返回結果: {k2, k1} s=set(hello) print(s) 返回結果: {e, o, h, l} s=set("hello") print(s) 返回結果: {e, o, h, l}

********集合的方法:********

1.add()方法:向集合中添加元素

s={1,2,3}
s.add(s)
print(s)
返回結果:
{1, 2, 3, s}

2.clear()方法:清空集合

3.copy()方法:復制集合

4.pop()方法:從集合中隨機刪除一個元素,不特定的順序刪除
  pop方法可以把刪除的元素賦值給變量


例如:

s={sss,1,2,3}
v=s.pop()
print(v,s)
返回結果:
1 {2, 3, sss}

5.remove()方法:從集合中指定刪除一個元素
格式:
  S.remove(<element>)
如果指定的element在集合中不存在,則報錯
例如:

s={sss,1,2,3}
s.remove(sss)  #註意要使用引號
print(s)
返回結果:
{1, 2, 3}

6.discard()方法:指定元素刪除,如果指定元素不存在,則不會報錯

********集合的關系操作及其方法********

1.
intersecion()方法:獲取2個集合的交集
格式1:
  S1.intersection(<S2>)
格式2:
  S1&S2
例如:

python_l=[lcg,szw,zjw]
linux_l=[lcg,szw]
p_s=set(python_l)
l_s=set(linux_l)
v=p_s.intersection(l_s)
print(v)
返回結果:
{szw, lcg}

或者
v=p_s&l_s
print(v)

2.
union()方法:獲取2個集合的並集,組成一個集合,並且去重
格式1:
  S1.union(<S2>)
格式2:
  S1|S2
例如:

python_l=[lcg,szw,zjw]
linux_l=[lcg,szw]
p_s=set(python_l)
l_s=set(linux_l)
v=p_s.union(l_s)
print(v)
返回結果:
{zjw, lcg, szw}

或者
v=p_s|l_s
print(v)

3.
difference()方法:生成2個集合的差集,表示在左面的集合中,只存在於左面集合,在右面集合沒有的元素
格式1:
  S1.difference(<S2>)
格式2:
  S1-S2
例如:

python_l=[lcg,szw,zjw]
linux_l=[lcg,szw]
p_s=set(python_l)
l_s=set(linux_l)
v=p_s.difference(l_s)
print(v)
返回結果:
{zjw}

或者
v=p_s-l_s
print(v)

4.
symmetric_difference()方法:集合的交差補集
格式1:
  S1.symmetric_difference(<S2>)
格式2:
  S1^S2
例如:

python_l=[lcg,szw,zjw]
linux_l=[lcg,szw]
p_s=set(python_l)
l_s=set(linux_l)
v=p_s.symmetric_difference(l_s)
print(v)
返回結果:
{zjw}

5.
difference_update()方法:兩個集合做完差集(difference)之後,把結果更新回去
格式
  S1.difference_update(<S2>)
  S1與S2作差集,然後把結果賦值給S1

例如:

python_l=[lcg,szw,zjw]
linux_l=[lcg,szw]
p_s=set(python_l)
l_s=set(linux_l)
p_s.difference_update(l_s)
print(p_s)
返回結果:
{zjw}

6.
intersection_update()方法:兩個集合做交集(intersection),把結果更新回去
格式:
  S1.intersection_update(S2)
  S1與S2作交集,然後把結果賦值給S1
例如:

python_l=[lcg,szw,zjw]
linux_l=[lcg,szw]
p_s=set(python_l)
l_s=set(linux_l)
p_s.intersection_update(l_s)
print(p_s)
返回結果:
{lcg, szw}

7.
isdisjoint()方法:如果兩個集合交集之後,沒有結果,返回True,就是兩個集合沒有交集就返回True
格式:
  S1.isdisjoint(S2)
例如:

s1={1,2}
s2={3,5}
v=s1.isdisjoint(s2)
print(v)
返回結果:
True

s1={1,2,3,}
s2={2,4,9}
v=s1.isdisjoint(s2)
print(v)
返回結果:
False

8.
issubset()方法:返回一個集合是否是另一個集合的子集合,是子集合返回True,否則返回False
格式:
  S1.issubset(S2)
例如:

s1={1,2}
s2={1,2,3}
v=s1.issubset(s2)
print(v)
返回結果:
True

9.
issuperset()方法:返回一個集合是否是另一個集合的父集、超集,是返回True,否則返回False
格式:
  S1.issuperset(S2)
例如:

s1={1,2}
s2={1,2,3}
v=s2.issuperset(s1)
print(v)
返回結果:
True

10.
update()方法:將可叠代對象(字符串、元組、列表、集合)做並集,把結果更新回去
格式:
  S1.update(<可叠代對象>)
  作並集之後,把結果賦值給S1

例如:

s1={1,2}
s2={1,2,3}
s1.update(s2)
print(s1)
返回結果:
{1, 2, 3}

python之集合及其方法---整理集