【精品分享】《Python編程從入門到實踐》學習筆記——第三章 列表簡介

本系列記錄的是自己學習筆記,以及一些總結,並非照搬書本,道友可進行查漏補缺,與君共勉。

本系列文章傳送門
第2章 變量和簡單數據類型
第3章 列表簡介
第4章 操作列表
第5章 if語句
第6章 字典          未完待續
第7章 while循環 未完待續
第8章 函數         未完待續
第9章 類            未完待續
第10章 文件和異常 未完待續
項目實戰



列表是由一系列按特定順序排列的元素組成。用方括號[]表示列表,用逗號分隔元素。
print(列表),輸出結果是帶中括號的。

3.1 訪問列表

3.1.1 根據索引訪問單個元素

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[1])

# 輸出結果(沒有方括號和引號):
cannondale

此時輸出了字符串cannondale,還可以利用第二章學到的對字符串操作:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[1].title())  # 每個單詞首字母大寫

# 輸出結果(沒有方括號和引號)
Cannondale

特別解析
支持負數索引,-1最後一位,-2倒數第二位…

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])

# 輸出結果(沒有方括號和引號)
specialized

3.1.2 根據切片訪問多個元素

此時返回值仍然是列表。左閉右開區間

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0:2])

# 輸出結果
['trek', 'cannondale']

3.2 增、刪、改列表

3.2.1 添加列表元素

(一)在列表末尾添加元素——append()方法

append()方法只能在列表末尾添加單個元素。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
addbicy = 'haluo'
bicycles.append(addbicy)
print(bicycles)

# 輸出結果
['trek', 'cannondale', 'redline', 'specialized', 'haluo']

(二)在列表末尾添加元素——extend()方法

extend()方法可以在列表末尾添加多個元素,可以理解爲兩個列表合併。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
addbicy = ['haluo','mobai']
bicycles.extend(['haluo','mobai'])
print(bicycles)

# 輸出結果
['trek', 'cannondale', 'redline', 'specialized', 'haluo', 'mobai']

特別解析:
extend()方法通過在列表末尾追加可迭代對象中的元素來擴展列表。可迭代對象包括字符串、列表、元祖、字典。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.extend('haluo')
print(bicycles)

# 輸出結果
['trek', 'cannondale', 'redline', 'specialized', 'h', 'a', 'l', 'u', 'o']

# 因爲這裏是將字符串'haluo'視爲一個可迭代對象進行處理的。

(三)在列表中插入元素——insert()方法

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.insert(1,'haluo')
print(bicycles)

# 輸出結果
['trek', 'haluo', 'cannondale', 'redline', 'specialized']

3.2.2 刪除列表元素

(一)使用del語句刪除列表元素
del語句結合索引可以刪除指定位置的元素; 如果不指定索引,將刪除整個列表。
del語句刪除元素,沒有返回值,但會刪除原列表的元素。

bicycles = ['trek', 'haluo', 'cannondale', 'redline', 'specialized']
del bicycles[1]
print(bicycles)

# 輸出結果
['trek', 'cannondale', 'redline', 'specialized']

(二)使用pop()方法刪除列表元素
pop()方法刪除列表元素返回值爲被刪除的元素(稱爲“彈出”)。括號中不輸入索引值,則默認刪除最後一個,也可指定索引刪除。

bicycles = ['trek', 'haluo', 'cannondale', 'redline', 'specialized']
bic = bicycles.pop()
print(bicycles)
print(bic)

# 輸出結果
['trek', 'haluo', 'cannondale', 'redline']
specialized

特別解析:
刪除列表元素如何選擇使用del語句還是pop()方法?
答:如果你要從列表中刪除一個元素,且不再以任何方式使用這個元素時,使用del語句;
如果你要在刪除元素後繼續使用這個元素,就使用pop()方法。

(三)根據元素值刪除列表元素——remove()方法
remove()方法如果成功刪除值則返回None;如果列表沒有該值則報錯list.remove(x): x not in list

bicycles = ['trek', 'haluo', 'cannondale', 'redline', 'specialized']
bic = bicycles.remove('haluo')
print(bicycles)
print(bic)

# 輸出結果
['trek', 'cannondale', 'redline', 'specialized']
None

特別解析:
remove()方法只刪除第一個指定的值,如果要刪除的值在列表中多次出現,需要使用循環來判斷是否刪除了所有這樣的值。
remove()方法刪除所有相同的值有坑(由於刪除元素後列表自動收縮,1. 每一次刪除一個元素,列表的長度就會發生變化,越界坑;2. 元素的索引也會發生變化,漏刪坑),要注意迴避,具體後面單獨出文章進行分析

# 刪除列表中爲1的元素
# 越界坑
nums = [1,5,3,1,1,3]
for i in range(len(nums)):
     if nums[i]==1:
          nums.remove(1)
print(nums)
# 輸出報錯:
IndexError: list index out of range


# for循環漏刪坑
nums = [1,5,3,1,1,3]
for num in nums:
     if num == 1:
          nums.remove(num)
print(nums)
# 輸出結果
[5, 3, 1, 3]
# 輸出報錯:
IndexError: list index out of range


# 正確寫法1 ,利用for循環+range從後往前遍歷
nums = [1,5,3,1,1,3]
for i in range(len(nums)-1,-1,-1):
     if nums[i]==1:
          nums.remove(1)
print(nums)
# 輸出結果
[5, 3, 3]

# 正確寫法2 ,利用while循環。
nums = [1,5,3,1,1,3]
while 1 in nums:
     nums.remove(1)
print(nums)
# 輸出結果
[5, 3, 3]

# 正確寫法3 ,利用列表解析式.(還有別的實現方法這裏不列舉了)
nums = [1,5,3,1,1,3]
nums = [num[i]  for i in range(0, len(nums)) if nums[i] != 1]
print(nums)
# 輸出結果
[5, 3, 3]

3.2.3 修改列表

用索引指定要修改的元素,然後直接賦值。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles[2] = 'red'
print(bicycles)

# 輸出結果
['trek', 'cannondale', 'red', 'specialized']

也可多個元素一起修改

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles[0:2] = ['tr','ca']
print(bicycles)

# 輸出結果
['tr', 'ca', 'redline', 'specialized']

3.3 組織列表

Python提供了很多組織(排序)列表的方法

3.3.1 對列表進行永久性排序——方法sort()

默認正序,如果需要倒序,向sort()方法傳遞參數 reverse=True.
sort()排序後原來的排列順序無法恢復。
格式:
列表名稱.sort()

# 正序
cars = ['bmw', 'audi', 'toyota', 'subaru','abdi','12345','ABDI','AB!#','!#']
cars.sort(reverse=True)
print(cars)

# 輸出結果:
['!#', '12345', 'AB!#', 'ABDI', 'abdi', 'audi', 'bmw', 'subaru', 'toyota']
# 倒序
cars = ['bmw', 'audi', 'toyota', 'subaru','abdi','12345','ABDI','AB!#','!#']
cars.sort(reverse=True)
print(cars)

# 輸出結果:
['toyota', 'subaru', 'bmw', 'audi', 'abdi', 'ABDI', 'AB!#', '12345', '!#']

特別解析
排序優先級:特殊字符 > 數字 > 大寫字母 > 小寫字母

3.3.2 對列表進行臨時性排序——函數sorted()

默認正序,如果需要按相反順序排列,需向sorted()函數傳遞參數 reverse=True.
函數sorted()排序後原來的排列順序不變,臨時性的。
格式:
sorted(列表名稱)

# 正序
oldcars = ['bmw', 'audi', 'toyota', 'subaru','abdi','12345','ABDI','AB!#','!#']
newcars = sorted(cars)
print(oldcars)
print(newcars)

# 輸出結果
['bmw', 'audi', 'toyota', 'subaru', 'abdi', '12345', 'ABDI', 'AB!#', '!#']
['!#', '12345', 'AB!#', 'ABDI', 'abdi', 'audi', 'bmw', 'subaru', 'toyota']
# 倒序
oldcars = ['bmw', 'audi', 'toyota', 'subaru','abdi','12345','ABDI','AB!#','!#']
newcars = sorted(cars,reverse=True)
print(oldcars)
print(newcars)

# 輸出結果
['bmw', 'audi', 'toyota', 'subaru', 'abdi', '12345', 'ABDI', 'AB!#', '!#']
['toyota', 'subaru', 'bmw', 'audi', 'abdi', 'ABDI', 'AB!#', '12345', '!#']

3.3.3 反轉列表順序——方法reverse()

方法reverse()指的是反轉列表元素的排列順序,並且是永久性修改列表元素順序。
格式:
列表名稱.reverse()

cars = ['bmw', 'audi', 'toyota', 'subaru','abdi']
cars.reverse()
print(cars)

# 輸出結果
['abdi', 'subaru', 'toyota', 'audi', 'bmw']

特別解析

  1. 方法的使用格式是:對象名稱.方法();
  2. 函數的使用格式是:函數(對象名稱);
  3. 函數len()可求列表的長度,返回元素個數。

如文章對您有幫助,感謝您的點贊+關注(^ _ ^)

福利:添加關注、評論區留言免費贈送自己學習資料

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