python基礎中需要注意的點002

1. 序列封包和序列解包

1.序列封包:程序把多個值賦給一個變量時,python會自動封裝成元組。
2.序列解包:程序允許序列(元組或列表等)直接賦值給多個變量,此時序列的多個元素會被依次賦值給每個變量(元素數與變量個數相等)。
看如下代碼:
序列封包

vals = 10,20,30
print(vals)#(10,20,30)

結果如下:
在這裏插入圖片描述

序列解包

a_tuple = tuple(range(1,10,2))
a,b,c,d,e = a_tuple
print(a,b,c,d,e) #1 3 5 7 9

結果如下:
在這裏插入圖片描述

在序列解包時也可只解出部分變量,剩下的依然使用列表變量保存。Python允許在左邊被賦值的變量之前添加“*”,該變量就代表一個列表,可保存多個集合元素。

First,second,*rest = range(10)
print(First)#0
print(second)#1
print(rest) #[2,3,4,5,6,7,8,9]

效果如下:
在這裏插入圖片描述

爲了加深理解,同理可得以下代碼:

First,*middle,last = range(10)
print(First)#0
print(middle) #[2,3,4,5,6,7,8,9]
print(last)#9

在這裏插入圖片描述

2.append()方法和extend()方法

append()方法追加元組、列表只是把其當成單個元素,若不希望將被追加的列表當成一個整體而只是追加列表中的元素,可使用列表的extend()方法。
接下來咱們看看具體用法:
1.將元組當成整體:

a_list = ['a',1,2]
a_list.append((3.1,5.6))
print(a_list) #['a',1,2,(3.1,5.6)]

效果:
在這裏插入圖片描述
2.將列表當成整體:

a_list = ['a',1,2]
a_list.append([3.1,5.6])
print(a_list) #['a',1,2,[3.1,5.6]]

效果:
在這裏插入圖片描述
3.列表的extend()方法

b_list = ['a',30]
b_list.extend((-2,3.1))
print(b_list) #['a',30,-2,3.1]
b_list.extend(['A','R'])
print(b_list) #['a',30,-2, 3.1,’A’,’R’]
b_list.extend(range(10))
print(b_list) #['a', 30, -2, 3.1, 'A', 'R', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

效果:
在這裏插入圖片描述

3.列表相關

1.希望在列表中增加元素,可用insert()方法:

c_list = [1,5,6,9]
c_list.insert(1,'Python進階之路') #1是索引下標位
print(c_list)

在這裏插入圖片描述
2.刪除del操作用索引還可以刪除普通變量:

c_list = [1,5,6,9]
c_list.insert(1,'Python進階之路') #[1,'Python進階之路', 5, 6, 9]
del c_list[0]
print(c_list)

效果如下:
在這裏插入圖片描述
提到刪除,稍微提一下remove()方法(並不建議使用,瞭解即可):

c_list = [1,5,6,9]
c_list.insert(1,'Python進階之路')
print(c_list)
c_list.remove(1)
print(c_list)

程序結果:
在這裏插入圖片描述
該方法是按元素刪除並且只刪除第一次找到的元素,若找不到則會引發Value Error 錯誤,所以並不建議使用。
3.用slice語法對列表其中一部分賦值,即可爲列表增加元素也能爲列表刪除元素。
若使用字符串賦值,python會自動把字符串當成序列處理,其中每一個字符都是元素。請看以下代碼:

a_list = [1,2,3,4,5]
a_list[1:3] = 'hello'#索引位爲1、2的元素即2和3會被替換
print(a_list)

效果如下:
在這裏插入圖片描述
4.reverse()方法可將列表中所有元素的順序反轉,而sort()方法默認升序排列,可傳入key和reverse兩個參數。來看以下代碼:

a_list = [11,2,31,4,52]
a_list.sort() #默認升序排列
print(a_list)
a_list.sort(reverse=True)
print(a_list)
b_list = ['你好呀','心向陽光','便種下太陽慢慢生長','往事隨風可好?']
b_list.sort(key=len,reverse=True)#key=len:按字符串長度比大小;reverse=True:反排序
print(b_list)

程序結果如下:
在這裏插入圖片描述

4.字典相關

1.元組不可變可作爲字典的key,而列表可變不能作爲字典的key,dict()函數創建字典可以傳入多個列表或元組參數作爲key-value對。
來看以下代碼:

s = [('hello',888),('byebye',666)]
dict1 = dict(s)
print(dict1)
s1 = [['hello',888],['byebye',666]]
dict2 = dict(s1)
print(dict2)
dict3 = dict(a = 1.68,b = 999)#這種key不需要加引號
print(dict3)

程序結果如下:
在這裏插入圖片描述
2.字典中的get()方法是根據key來獲取value,若不存在返回None,用方括號語法,若不存在會引發keyError錯誤。

dict1 = {'hello': 888, 'byebye': 666}
s1 = dict1.get('hello')
s2 = dict1.get('niubi')
print(s1) #888
print(s2) #None
print(dict1['byebye'])#使用方括號語法key存在 輸出666
print(dict1['bli']) #使用方括號語法key不存在,程序報KeyError錯誤

程序運行結果如下:
在這裏插入圖片描述
3.update()方法更新字典,若存在則覆蓋value,若不存在會自動添加鍵值對。items(),keys()和values()方法分別用於獲取字典的所有key-vaue對、所有key、所有value。三個方法依次返回dict_item、dict_keys和dict_value對象,python不希望用戶直接操作這幾個方法,但可以通過list()函數把他們轉換成列表。用法見以下代碼:

dict1 = {'hello': 888, 'byebye': 666}
s1 = dict1.items()
print(type(s1)) #<class 'dict_items'> 返回一個dict_items對象
print(list(s1)) #[('hello', 888), ('byebye', 666)]
s2 = dict1.keys()
print(type(s2))
print(list(s2))#['hello', 'byebye']
s3 = dict1.values()
print(type(s3))
print(list(s3))#[888, 666]

運行結果:
在這裏插入圖片描述
4.popitem()方法用於隨機彈出字典中的一個鍵值對,但其實此處的隨機是假的,就像列表的pop()方法總是彈出列表的最後一個元素,popitem()方法也是彈出字典的最後一個鍵值對。由於字典存儲鍵值對的順序是不可知的,因此開發者感覺popitem()方法是“隨機”彈出的,但實際上字典的popitem()方法總是彈出底層存儲的最後一個鍵值對(實際上彈出的是一個元組,可用序列解包的方式接收key和value)。使用方法見以下代碼:

dict1 = {'hello': 888, 'byebye': 666,'fine':1314}
print(dict1)
print(dict1.popitem())
print(dict1)

運行結果:
在這裏插入圖片描述
5.setdefault()方法用於根據key來獲取相應的value值,額外功能:程序要獲取的字典中的key不存在時,該方法會自動爲其設置一個默認的value,再返回key對應的value值。

dict1 = {'b':8.5,'c':9,'a':6.6}
print(dict1.setdefault('d',10)) #10

6.fromkeys()方法使用給定的多個key創建字典,這些key對應的value默認都是None,也可以額外傳入一個參數作爲一個默認的value。

dict1 = dict.fromkeys(['a','b'])
print(dict1) #{'a':None,'b':None}
dict2 = dict.fromkeys((13,14))
print(dict2) #{'13':None,'14':None}
dict3 = dict.fromkeys((13,14),'ok')
print(dict3) #{13:'ok',14:'ok'}

7.字典格式化字符串:在字符串模板中按key指定變量,然後通過字典爲字符串模板中的key設置值,用法如下:

ss ='書名是:%(name)s,價格是:%(price)010.f'
book = {'name':'爲了你我願意熱愛整個世界','price':13.14}
print(ss%book)# 書名是:爲了你我願意熱愛整個世界,價格是:13.14

結語

每一篇博客的結語我會寫上一段激勵的話,因爲我知道,學習的情緒很重要,適當的給自己打打氣很有必要。可能有時候我們會感覺代碼很枯燥,不想堅持了,但親愛的朋友,我想告訴你,你離成功只差一個堅持。前期積累的過程註定是一段沉默的時光,也許你感覺很累,也許你甚至已經猶豫着要不要放棄,但是我可以告訴你,每一個人心中都有一隻華麗、睿智、高貴的鳳凰,唯有經歷淬火錘鍊,才能涅槃重生。當我們踩過了衆多的坑,經歷了衆多的艱難,我們會明白暗淡的時光會讓我們逆勢生長。積累到一定的程度你會發現,代碼的世界真是一個神奇的世界,爲了看看這個世界的風光,你會一直狂熱的一路走下去。成功的路上並不擁擠,因爲堅持的人不多。只有堅持了,我們才知道,這一路上有多少事情需要幹,有多少東西需要學習。隨着時間的推移,任何一條通往成功的道路上同行者會越來越少。把“勝者爲王”改爲“剩者爲王”也許更能準確地表達成功與堅持的關係。生命需要一種激情,當這種激情能讓別人感到你是不可阻擋的時候,就會爲你的成功讓路。所以,親愛的朋友們,用你滿腔的激情繼續堅持吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章