1. 程式人生 > 實用技巧 >【自學Python系列】Python 基礎 (內建資料結構-列表,集合,字典)之列表

【自學Python系列】Python 基礎 (內建資料結構-列表,集合,字典)之列表

列表

開篇講了一些語言的基礎,今天開始記錄一些學習中的其他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中使用切片列表。

複製列表,可建立一個包含整個列表的切片,可以省略起始索引和終止索引 [:],從列表中提取的切片,建立了列表的副本,將副本儲存到變數中。

  • 如果只是拿一個列表賦值給另一個列表,實際上只是讓新變數也關聯到賦值列表上。因此兩個變數都指向了同一個列表。

這裡整理了列表的相關技術點,有什麼不對或者疑惑的地方歡迎留言。