【自學Python系列】Python 基礎 (內建資料結構-列表,集合,字典)之列表
阿新 • • 發佈:2020-12-08
列表
開篇講了一些語言的基礎,今天開始記錄一些學習中的其他python的知識。
列表 由一系列按
特定順序
排列的元素組成。用方括號([])來表示列表,元素用逗號隔開。
可以將任何東西加入列表中,其中的元素之間可以沒有任何關係。命名的話最好用複數來命名
訪問元素
- 因為是順序的,所以可以從索引獲取元素,從0 開始而不是1.
- 如果返回最後一個元素索引是-1, 這樣的約定可以讓我們使用負數來從最後開始去索引列表中的元素。
- 可以使用其他變數一樣使用列表中的各個值。
增刪改查
- 修改列表元素直接使用索引賦值就可以修改指定索引的元素值。
- .append() 在列表末尾增加元素,象使用棧一樣,起初初始化一個空列表,然後append資料。
- .insert()在列表任何位置新增新元素,需要指定元素索引和值。指定索引,在索引位置插入新值,其他元素順序向後增加+1索引值。
- 刪除列表
+ del 需要提供元素在列表的索引,可以刪除任何位置元素,刪除後並無返回,元素是被直接刪除,你將無法訪問。
+ pop() 將元素從列表中刪除,元素就不再列表中了,並接著使用它的值。方法可刪除列表末尾的元素,並讓你使用pop出來的元素,更象一個棧來使用。
+ 加入你需要pop出指定位置的元素,需要提供引數索引值。
+ 有時我們並不知道索引,知道元素值,可以使用remove()方法來刪除,此方法也可以獲取到刪除的元素並使用它。
+ 方法remove()只刪除第一個指定的值,如果存在從夫的值,需要使用迴圈來判斷是否刪除了所有的值。
組織列表
建立列表中,元素的排列順序常常無法預測。
- sort()
永久性
排序,如果想反向排序,需要提供引數 reverse=True. e.g. cars.sort(reverse=True) - sorted()
臨時性
排序,並不影響原有順序。反向,提供引數 reverse=True - reverse()
永久性
反轉列表,並不是按照什麼規定順序排序,而就是將原有順序,反轉,如果想變為原有順序,直接在反轉一次。 - len() 快速或許列表長度,列表元素計算長度是從1 開始計算。
避免使用中使用索引報錯,因為從0開始記數。
+ 索引-1 是你想訪問的最後一個元素
+ -1 索引也是最後一個元素。
+ pop() 刪除並返回最後一個元素。
發生索引錯誤,可以將列表或者長度打印出來,方便查詢錯誤原因。
操作列表
- 遍歷 使用 for 迴圈
+for item in items:
記得後邊的冒號 表示這個for迴圈開始。
迴圈很重要,自動化完成重複工作的常見方式之一。
Python 根據縮排來判斷程式碼行與前一個程式碼行的關係。
數值列表
列表非常適合用於儲存數字集合。
- range() 輕鬆生成一系列的數字。
+ for value in range(1,5): 知識列印了1~4,語義理解應該是從第一個值開始數,並在到達指定的第二個值後停止並不包含第二個值。
要建立數字列表,可以使用list()將range()的結果直接轉換為列表。
+ number = list(range(1,6))
range 也可以指定步長(就是一個數到另一個數的間隔)
+ range(2,11,2) # 從2 到 11 ,每次間隔是2.
對數字列表進行統計
- min() 最小數
- max() 最大數
- sum() 求和
列表解析 將for迴圈和建立新元素的程式碼合併成一行,自動附加新元素。
- squares = [value**2 for value in range(1,11)]
- 語法:
+ 首先指定一個描述列表名squares
+ 左方括號,定義一個表示式,用於生成需要儲存到列表的值。 value**2
+ for迴圈,用於給表示式提供值
+ 右方括號
+這個for語句沒有冒號結尾
使用列表的一部分
python可以處理列表的部分資料--切片
要建立切片,要指定使用的第一個元素和最後一個元素的索引。到第二個截至,並不包含第二個引數的元素。
- players[0:3] 輸出也是一個列表,是列表的子集。如果沒有指定第一個索引,將自動從列表開頭開始。players[:3]
- 要切片終止於末尾,也可以省略第二個索引。 players[1:]
- 索引要注意負數表示從後往前的索引。
如果要遍歷列表的部分元素,可以在for中使用切片列表。
複製列表,可建立一個包含整個列表的切片,可以省略起始索引和終止索引 [:],從列表中提取的切片,建立了列表的副本,將副本儲存到變數中。
- 如果只是拿一個列表賦值給另一個列表,實際上只是讓新變數也關聯到賦值列表上。因此兩個變數都指向了同一個列表。
這裡整理了列表的相關技術點,有什麼不對或者疑惑的地方歡迎留言。