python 基礎知識之集合操作

2021-08-15 01:42:58 字數 2582 閱讀 3978

一、集合定義

#作用:去重,關係運算,

#定義:

知識點回顧

可變型別是不可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,...