集合資料型別,拷貝,深拷貝,淺拷貝

2022-01-13 08:46:08 字數 4479 閱讀 1499

用{}中間值用,隔開,且集合中元素排列是無序的,而且如果有相同元素會只保留乙個

1.必須掌握

1.長度len

set_1 = 

print(len(set_1))

#5

2.成員運算in和not in
#表示判斷集合裡面是否有某個值

set_1 =

print(1 in set_1)

#true

print(100 in set_1)

#false

3.並集(union或者|)
#兩個集合的集合綜合,union或者|

)4.交集(intersection或者&)

set_1 = 

set_2 =

set_3 = set_1.intersection(set_2)

set_4 = (set_1 & set_2)

print(set_3)

print(set_4)

#

)5差集(difference 或者 -)

6.對稱差集

7.集合內容是否相同(==)

set_1 = 

set_2 =

print(set_1 == set_2)

#false

8.父集(>或者》=或者issuperset)
set_1 = 

set_2 =

set_3 = set_1.issuperset(set_2) #issuperset與》=意思相同

set_4 = (set_1 > set_2) #如果set_2 = ,結果也為true

print(set_3) #true

print(set_4) #false

9.子集(《或者)
set_1 = 

set_2 =

set_3 = set_1.issubset(set_2) #issubset與<=意思相同

set_4 = (set_1 < set_2) #如果set_2 = ,結果也為true

print(set_3) #true

print(set_4) #false

2.掌握

1.add

新增,列印新增時候回返回none

2.remove

移除,列印新增時候回返回none,找不到移除的內容會報錯

3.difference_update

刪除相同的值 列印新增時候回返回none

4.discard

移除,列印新增時候回返回none,找不到移除的內容也會返回none

5.isdisjoint

判斷有無交集

乙個值無序的

可變比如說a拷貝b,a裡面的值傳送變化時候b也會發生變化,淺拷貝和深拷貝一般出現在乙個變數裡有多個元素,有可變的元素和不可變的元素,比如若說a淺拷貝b,其中b可變元素變了,a也變了,b中不可變元素變了,a不會變,深拷貝則是,其中不管哪個元素變了後,兩者互不影響受限。

有如下兩個集合,pythons是報名python課程的學員名字集合,linuxs是報名linux課程的學員名字集合。

pythons=

linuxs=

求出即報名python又報名linux課程的學員名字集合

pythons=

linuxs=

pythons_linuxs = pythons & linuxs

print(pythons_linuxs)

求出所有報名的學生名字集合

pythons=

linuxs=

pythons_linuxs = pythons | linuxs

print(pythons_linuxs)

求出只報名python課程的學員名字

pythons=

linuxs=

pythons_linuxs = pythons - linuxs

print(pythons_linuxs)

求出沒有同時這兩門課程的學員名字集合

pythons=

linuxs=

pythons_linuxs = pythons ^ linuxs

print(pythons_linuxs)

有列表l=['a','b',1,'a','a'],列表元素均為可hash型別,去重,得到新列表,且新列表無需保持列表原來的順序

#去重

l=['a','b',1,'a','a']

new_l = set(l)

在上題的基礎上,儲存列表原來的順序

#第一種,想法,先用set把他變成有序,再找到相同的刪掉在原來的位置,後面迴圈發現刪了後索引沒法索引,就根據長度再套了個迴圈

l=['a','b',1,'a','a']

l_2 = set(l)

while len(l) != len(l_2):

for v_1 in range(len(l)):

for v_2 in range(1,len(l)):

if l[v_1] == l[v_2]:

d = v_2

break

del l[d]

print(l)

#第二種 做第三題發現裡面有字典沒法轉換成set,想到這樣,後來發現這樣就可以了。。

l_2 =

for a in l:

if a not in l_2:

print(l_2)

有如下列表,列表元素為不可hash型別,去重,得到新列表,且新列表一定要保持列表原來的順序

l=[,,

,,,]

#第一種

l=[ ,,,

,,]l_2 =

for a in l:

if a not in l_2:

while len(l) != len(l_2):

for v_1 in range(len(l)):

for v_2 in range(1,len(l)):

if l[v_1] == l[v_2]:

d = v_2

break

del l[d]

print(l)

#第二種 由於列表裡有字典沒法set,然後想到這樣加進去,後面就這樣了

l_2 =

for a in l:

if a not in l_2:

print(l_2)

請簡述拷貝、淺拷貝、深拷貝三者之間的區別:

比如說a拷貝b,a裡面的值傳送變化時候b也會發生變化,淺拷貝和深拷貝一般出現在乙個變數裡有多個元素,有可變的元素和不可變的元素,比如若說a淺拷貝b,其中b可變元素變了,a也變了,b中不可變元素變了,a不會變,深拷貝則是,其中不管哪個元素變了後,兩者互不影響受限。

深拷貝 淺拷貝 資料型別

1 不可變型別 包括數值 字串 元組 不可變指的是不能改變引用,只能放置乙個新的引用 2 可變型別 包括列表和字典 可變指的是當向列表或字典裡面增刪改時,引用沒有受到影響 進一步解釋可變與不可變,是指記憶體中的那塊內容 value 是否可以被改變。如果是不可變型別,在對物件本身操作的時候,必須在記憶...

js資料型別賦值,淺拷貝,深拷貝

直接上 是我的風格基本資料型別的賦值 var a 10 var b a b 24 console.log a 10 a不受b的影響。console.log b 24 基本資料型別賦值時。是copy乙份10的值。當b 24時。a不受b的影響。複製 複雜資料型別的賦值 var obj var obj1 ...

引用資料型別的淺拷貝與深拷貝

基本的資料型別可以分為兩類 基本資料型別 值型別 數字 字串 布林值 undefined null 引用資料型別 引用型別 函式 陣列 物件 只有複雜資料型別 引用資料型別 才有淺拷貝與深拷貝 基本資料型別資料傳遞後,在改變源資料後面不會改變 基本資料型別存的是值 引用資料型別存的是位址 引用資料型...