【精選】《Python編程從入門到實踐》學習筆記——第四章 操作列表

本系列記錄的是自己學習筆記,以及一些總結,並未照搬書本,不代表python完整知識體系,道友可進行查漏補缺,與君共勉。
(將在github上同步更新:https://github.com/MemorialCheng/EverybodyEveryday)

第4章 操作列表

4.1 遍歷整個列表

我們經常需要遍歷列表的所有元素,對每個元素執行相同的操作。可以使用for循環。
格式:
for item in list_of_items:
操作語句

dogs = ['藏獒', '哈士奇','秋田犬','柴犬']
for dog in dogs:
    print('這是一條' + dog.title())
      
# 輸出結果
這是一條藏獒
這是一條哈士奇
這是一條秋田犬
這是一條柴犬

4.2 創建數值列表

4.2.1 使用range()函數創建數字列表

range()函數可創建一個整數列表,一般用在 for 循環中。

語法

range(start, stop[, step])

參數說明:

start: 計數從 start 開始。默認是從 0 開始。例如range(5)等價於range(0, 5);

stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5;

step:步長,默認爲1。例如:range(0, 5) 等價於 range(0, 5, 1);

左閉右開!!!

for value in range(5):
    print(value)

# 輸出結果
0
1
2
3
4

使用函數list()將range()的結果直接轉換成列表

numbers = list(range(1,6))
print(numbers)

# 輸出結果
[1, 2, 3, 4, 5]

4.2.2 對數字列表執行簡單的統計計算

min()最小值函數,max()最大值函數,sum()求和函數。

numbers = list(0,10)
minNum = min(numbers)
maxNum = max(numbers)
sumNum = sum(numbers)
print(minNum,maxNum,sumNum)

# 輸出結果
0 9 45

4.2.3 列表解析/列表生成式

語法

法1: [expression for iter_val in iterable]

法2: [expression for iter_val in iterable if cond_expr]

例1. 要求:列出1~10所有數字的平方

# 1、普通方法:
squares = []
for value in range(1,11):
    squares.append(value**2)
print(squares)
# 輸出結果
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

####################################################

# 2、列表解析:
squares = [value**2 for value in range(1,11)]
print(squares)
# 輸出結果
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

例2. 要求:列出1~10中小於等於2,大於等於4的數字的平方

# 1、普通方法:
squares = []
for value in range(1,11):
    if value <= 2 or value >= 4 :
        squares.append(value**2)
print(squares)
# 輸出結果
[1, 4, 16, 25, 36, 49, 64, 81, 100]

####################################################

# 2、列表解析
squares = [value ** 2 for value in range(1,11) if value <= 2 or value >= 4]
print(squares)
# 輸出結果
[1, 4, 16, 25, 36, 49, 64, 81, 100]

例3. 要求:實現兩個列表中的元素逐一配對

# 1、普通方法:
L1 = ['x','y','z']
L2 = [1,2,3]      
L3 = []
for a in L1:
    for b in L2:
        L3.append((a,b))
print(L3)
# 輸出結果
[('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

####################################################

# 2、列表解析:
L1 = ['x','y','z']
L2 = [1,2,3]  
L3 = [(a, b) for a in L1 for b in L2]
print(L3)
# 輸出結果
[('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

4.3 切片

可用於訪問列表的部分元素。

注:取的是列表索引,左閉右開,支持負數索引。返回值仍然是列表

推薦參考大佬博客https://www.jianshu.com/p/15715d6f4dad ,博客介紹很清晰,這裏不再贅述。

切片操作基本表達式:object[start_index:end_index:step]

切片小結

(一)start_index、end_index、step三者可同爲正、同爲負,或正負混合。但必須遵循一個原則,即:當start_index表示的實際位置在end_index的左邊時,從左往右取值,此時step必須是正數(同樣表示從左往右);當start_index表示的實際位置在end_index的右邊時,表示從右往左取值,此時step必須是負數(同樣表示從右往左),即兩者的取值順序必須相同。

(二)當start_index或end_index省略時,取值的起始索引和終止索引由step的正負來決定,這種情況不會有取值方向矛盾(即不會返回空列表[]),但正和負取到的結果順序是相反的,因爲一個向左一個向右。

(三)step的正負是必須要考慮的,尤其是當step省略時。比如a[-1:],很容易就誤認爲是從“終點”開始一直取到“起點”,即a[-1:]= [9, 8, 7, 6, 5, 4, 3, 2, 1, 0],但實際上a[-1:]=[9](注意不是9),原因在於step省略時step=1表示從左往右取值,而起始索引start_index=-1本身就是對象的最右邊元素了,再往右已經沒數據了,因此結果只含有9一個元素。

4.4 元組(tuple)

Python的元組與列表類似,不同之處在於元組的元素不能修改。

元組使用小括號,列表使用方括號。

元組創建很簡單,只需要在括號中添加元素,並使用逗號隔開即可。

# 示例
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )

元組中只包含一個元素時,需要在元素後面添加逗號

tup1 = (50,)

4.4.1 訪問元組

使用索引訪問其元素

dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])

# 輸出結果
200
50

4.4.2 修改元組

元組的元素不能修改!!!

# 錯誤示例
dimensions = (200, 50)
dimensions[0] = 250
報錯
TypeError: 'tuple' object does not support item assignment

可對元組進行連接組合

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print(tup3)

# 輸出結果
(12, 34.56, 'abc', 'xyz')

可對元組進行重新賦值

dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
    print(dimension)

#  重新賦值
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
    print(dimension)

4.4.3 刪除元組——del語句

元組中的元素不能刪除,但可使用del語句刪除真個元組。

tup = (12, 34.56)
del tup

感謝您的點贊+關注(^ _ ^)

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