一、集合定義
#作用:去重,關係運算,
#定義:
知識點回顧
可變型別是不可hash型別
不可變型別是可hash型別
#定義集合:
集合:可以包含多個元素,用逗號分割,
集合的元素遵循三個原則:
1:每個元素必須是不可變型別(可hash,可作為字典的key)
2:沒有重複的元素
3:無序
注意集合的目的是將不同的值存放到一起,不同的集合間用來做關係運算,無需糾結於集合中單個值
#優先掌握的操作:
#1、長度len
#2、成員運算in和not in
#3、|合集
#4、&交集
#5、-差集
#6、^對稱差集
#7、==
#8、父集:>,>=
#9、子集:<,<=
二、集合練習
一.關係運算
有如下兩個集合,pythons是報名python課程的學員名字集合,linuxs是報名linux課程的學員名字集合
pythons=
linuxs=
1. 求出即報名python又報名linux課程的學員名字集合
2. 求出所有報名的學生名字集合
3. 求出只報名python課程的學員名字
4. 求出沒有同時這兩門課程的學員名字集合
# 有如下兩個集合,pythons是報名python課程的學員名字集合,linuxs是報名linux課程的學員名字集合
pythons=
linuxs=
# 求出即報名python又報名linux課程的學員名字集合
print(pythons & linuxs)
# 求出所有報名的學生名字集合
print(pythons | linuxs)
# 求出只報名python課程的學員名字
print(pythons - linuxs)
# 求出沒有同時這兩門課程的學員名字集合
print(pythons ^ linuxs)
三、集合實戰操作
二.去重
1. 有列表l=['a','b',1,'a','a'],列表元素均為可hash型別,去重,得到新列表,且新列表無需保持列表原來的順序
2.在上題的基礎上,儲存列表原來的順序
3.去除檔案中重複的行,肯定要保持檔案內容的順序不變
4.有如下列表,列表元素為不可hash型別,去重,得到新列表,且新列表一定要保持列表原來的順序
l=[ ,,,
,,
]
#去重,無需保持原來的順序
l=['a','b',1,'a','a']
print(set(l))
#去重,並保持原來的順序
#方法一:不用集合
l=[1,'a','b',1,'a']
l1=for i in l:
if i not in l1:
print(l1)
#方法二:借助集合
l1=s=set()
for i in l:
if i not in s:
s.add(i)
print(l1)
#同上方法二,去除檔案中重複的行
import os
with open('db.txt','r',encoding='utf-8') as read_f,\
open('.db.txt.swap','w',encoding='utf-8') as write_f:
s=set()
for line in read_f:
if line not in s:
s.add(line)
write_f.write(line)
os.remove('db.txt')
os.rename('.db.txt.swap','db.txt')
#列表中元素為可變型別時,去重,並且保持原來順序
l=[ ,,,
,,
]# print(set(l)) #報錯:unhashable type: 'dict'
s=set()
l1=for item in l:
val=(item['name'],item['age'],item['***'])
if val not in s:
s.add(val)
print(l1)
#定義函式,既可以針對可以hash型別又可以針對不可hash型別
def func(items,key=none):
s=set()
for item in items:
val=item if key is none else key(item)
if val not in s:
s.add(val)
yield item
print(list(func(l,key=lambda dic:(dic['name'],dic['age'],dic['***']))))
python基礎知識之集合
鑑於前面已經對列表的一些用法進行過介紹,本篇文章就從元組開始說 首先,元組和列表的形式上是差不多的,都是儲存大量資料的一組集合,但是也是有不同點的 下面舉個列子 元組 test 1,3,xx 列表 test1 1,2,xx 從上面的列子可以看出在定義元組和列表時需要注意的不同,元組用的小括號,而列表...
Python基礎知識之集合
一般方式 將該集合的所有元素置於乙個大括號內,以逗號分隔。set1 set1 但上面這種方式不能用於建立乙個空集合 set0 type set0 乙個空的大括號會被認為是乙個空的字典。用set 建立集合 set a 5,chat 89,2.55 若建立乙個空集合,set 內不設定引數。如果集合中的元...
python基礎知識小結之集合
集合 特點 集合物件是一組無序排列的可雜湊的值 集合成員可以做字典的鍵,與列表和元組不同,集合無法通過數字進行索引。此外,集合中的元素不能重複。定義set new empty set object set iterable new set object s 應用 去重 lst1 1,1,2,2,3,...