徹底搞懂Python集合

2021-10-04 02:29:53 字數 4851 閱讀 8772

四、序列解包

五、python集合應用案例

直接將集合賦值給變數即可建立乙個集合物件。

>>

> a =

#建立集合物件

使用函式set()函式將列表、元組、字串、range物件等其他可迭代物件轉換為集合,如果原來的資料中存在重複元素,則在轉換為集合的時候只保留乙個;如果原序列或迭代物件中有不可雜湊的值無法轉換成為集合,丟擲異常。

>>

> a_set =

set(

range(8

,14))

#把range物件轉換為集合

>>

> a_set

>>

> b_set =

set([0

,1,2

,3,0

,1,2

,3,7

,8])

#轉換時自動去掉重複元素

>>

> b_set

>>

> x =

set(

)#空集合

(一)集合元素增加與刪除:

增加:add()方法可以增加新元素,如果該元素已存在則忽略該操作,不會丟擲異常;

update()方法用於合併另外乙個集合中的元素到當前集合中,並自動去除重複元素。

>>

> s =

>>

> s.add(3)

#新增元素,重複元素自動忽略

>>

> s

>>

> s.update(

)#更新當前字典,自動忽略重複的元素

>>

> s

刪除:

pop()方法用於隨機刪除並返回集合中的乙個元素,如果集合為空則丟擲異常;

remove()方法用於刪除集合中的元素,如果指定元素不存在則丟擲異常;

discard()方法用於從集合中刪除乙個特定元素,如果元素不在集合中則忽略該操作;

clear()方法清空集合刪除所有元素。

>>

> s.discard(5)

#刪除元素,不存在則忽略該操作

>>

> s

>>

> s.remove(5)

#刪除元素,不存在就丟擲異常

keyerror:

5>>

> s.pop(

)#刪除並返回乙個元素

1

(二)集合運算:
>>

> a_set =

set([8

,9,10

,11,12

,13])

>>

> b_set =

>>

> a_set | b_set #並集

>>

> a_set.union(b_set)

#並集》

> a_set & b_set #交集

>>

> a_set.intersection(b_set)

#交集》

> a_set.difference(b_set)

#差集》

> a_set - b_set

>>

> a_set.symmetric_difference(b_set)

#對稱差集

>>

> a_set ^ b_set

>>

> x =

>>

> y =

>>

> z =

>>

> x < y #比較集合大小/包含關係

false

>>

> x < z #真子集

true

>>

> y < z

false

>>

>

<=

#子集true

>>

> x, y, z =1,

2,3#多個變數同時賦值

>>

> v_tuple =

(false

,3.5

,'exp'

)>>

>

(x, y, z)

= v_tuple

>>

> x, y, z = v_tuple

>>

> x, y = y, x #交換兩個變數的值

>>

> x, y, z =

range(3

)#可以對range物件進行序列解包

>>

> x, y, z =

iter([

1,2,

3])#使用迭代器物件進行序列解包

>>

> x, y, z =

map(

str,

range(3

))#使用可迭代的map物件進行序列解包

>>

>> a =[1

,2,3

]>>

> b, c, d = a #列表也支援序列解包的用法

>>

> x, y, z =

sorted([

1,3,

2])#sorted()函式返回排序後的列表

>>

> s =

>>

> b, c, d = s.items(

)#這是python 3.5之前的版本執行結果,python 3.6之後的版本略有不同

>>

> b

('c',3

)#順序不確定

>>

> b, c, d = s #使用字典時不用太多考慮元素的順序

>>

> b

'c'>>

> b, c, d = s.values(

)>>

>

print

(b, c, d)13

2>>

> a, b, c =

'abc'

#字串也支援序列解包

>>

>

print

(a, b, c)

a b c

>>

> keys =

['a'

,'b'

,'c'

,'d'

]>>

> values =[1

,2,3

,4]>>

>

for k, v in

zip(keys, values)

:print

(k, v)

a 1b 2

c 3d 4

>>

> x =

['a'

,'b'

,'c'

]>>

>

for i, v in

enumerate

(x):

print

('the value on position is '

.format

(i,v)

)the value on position 0

is a

the value on position 1

is b

the value on position 2

is c

>>

> s =

>>

>

for k, v in s.items():

#字典中每個元素包含「鍵」和「值」兩部分

print

(k, v)

a 1c 3

b 2

1.使用集合快速提取序列中單一元素,即提取出序列中所有不重複元素。如果使用傳統方式的話,需要編寫下面的**:

>>

>

import random

#生成100個介於0到9999之間的隨機數

>>

> listrandom =

[random.choice(

range

(10000))

for i in

range

(100)]

>>

> newset =

set(listrandom)

>>

>

print

(newset)

2.返回指定範圍內一定數量的不重複數字。

import random

defrandomnumbers

(number, start, end)

:'''使用集合來生成number個介於start和end之間的不重複隨機數'''

data =

set(

)while

len(data)

element = random.randint(start, end)

data.add(element)

return data

data = randomnumbers(10,

1,100)

print

(data)

徹底搞懂Python元組

x 1 2,3 直接把元組賦值給乙個變數 type x 使用type 函式檢視變數型別 class tuple x 空元組 x tuple 空元組 tuple range 5 將其他迭代物件轉換為元組 0 1,2 3,4 x 0 元組支援使用下標訪問特定位置的元素 1 x 1 最後乙個元素,元組也支...

徹底搞懂Python字典

使用賦值運算子 將乙個字典賦值給乙個變數即可建立乙個字典變數。adict 也可以使用內建類dict以不同形式建立字典。x dict 空字典 type x 檢視物件型別 class dict x 空字典 keys a b c d values 1 2,3 4 dictionary dict zip k...

徹底搞懂px em rem

px畫素 pixel 相對長度單位。畫素px是相對於顯示器螢幕解析度而言的。px特點 em是相對長度單位。相對於當前物件內文字的字型尺寸。如當前對行內文字的字型尺寸未被人為設定,則相對於瀏覽器的預設字型尺寸。em特點 注意 任意瀏覽器的預設字型高都是16px。所有未經調整的瀏覽器都符合 1em 16...