四、序列解包
五、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...