Python List類型

來源:互聯網
上載者:User

標籤:分區   索引   rac   mat   one   相加   out   append   none   

列表是最常用的Python資料類型

建立一個列表
  • 建立一個列表
>>> l = [1, 2, 3, 4, 5 ]>>> l[1, 2, 3, 4, 5]
  • 建立一個空列表(方法1)
>>> l = []>>> l[]
  • 建立一個空列表(方法2)
>>> l = list()>>> l[]
  • 列表不是數組,列表中的資料項目不需要具有相同的類型
>>> l = [‘Apple‘, 123, True]>>> l[‘Apple‘, 123, True]
  • 把range()產生的內容轉換成list,range()的範圍是從左邊的數字到右邊的數字,包含左邊的數字,不包含右邊的數字
>>> l = list(range(12, 19))>>> l[12, 13, 14, 15, 16, 17, 18]
訪問列表中的值
  • 使用下標索引來訪問列表中的值
>>> l = [‘physics‘, ‘chemistry‘, 1997, 2000]>>> l[0]‘physics‘
  • 當索引超出了範圍時,Python會報一個IndexError錯誤,所以,要確保索引不要越界。
>>> l = [1, 2, 3, 4, 5, 6, 7 ]>>> l[10]Traceback (most recent call last):File "<stdin>", line 1, in <module>IndexError: list index out of range
  • 列表的索引下標是從0開始,表示列表從左向右數第一個資料,即列表第一個資料; 負下標是從-1開始,表示從右向左數,第一個資料,即列表最後一個資料。
>>> l = [1, 2, 3, 4, 5, 6, 7]>>> l[0]1>>> l[-1]7
更新列表

list是一個可變的有序表,所以,可以往list中追加元素:

  1. 追加元素至末尾:用append()函數添加:
>>> l = [1,2, 3, 4, 5 ]>>> l.append(6)>>> l[1, 2, 3, 4, 5, 6]
  1. 把元素插入到指定的位置,比如索引號為1的位置:用insert()函數添加:
>>> l = [1,2, 3, 4, 5 ]>>> l.insert(1, ‘Jack‘)>>> l[1, ‘Jack‘, 2, 3, 4, 5]
刪除列表元素
  • 可以使用 del 語句來刪除列表的元素,del list[i],i為索引位置,如下執行個體:
>>> l = [‘physics‘, ‘chemistry‘, 1997, 2000]>>> l[‘physics‘, ‘chemistry‘, 1997, 2000]>>> del l[2]>>> l[‘physics‘, ‘chemistry‘, 2000]
  • 要刪除list末尾的元素,用pop()方法,pop()方法傳回值為刪除的內容:
>>> l = [1, 2, 3, 4, 5 ]>>> value = l.pop()>>> l[1, 2, 3, 4]>>> value5
  • 要刪除指定位置的元素,用pop(i)方法,其中i是索引位置,pop(i)方法傳回值為刪除的內容:
>>> l = [1, 2, 3, 4, 5]>>> val = l.pop(2)>>> l[1, 2, 4, 5]>>> val3
  • 還有一個remove() 函數是用於移除列表中某個值的第一個匹配項。
>>> l = [123, ‘xyz‘, ‘zara‘, ‘abc‘, ‘xyz‘]>>> l.remove(‘xyz‘)>>> l[123, ‘zara‘, ‘abc‘, ‘xyz‘]
  • 清空列表元素,用clear()方法,清空列表所有的元素,獲得一個空列表
>>> l = [1, 2, 3, 4, 5]>>> l[1, 2, 3, 4, 5]>>> l.clear()>>> l[]
其他清單元素
  • 要把某個元素替換成別的元素,可以直接賦值給對應的索引位置:
>>> classmates = [‘Michael‘, ‘Bob‘, ‘Tracy‘]>>> classmates[1] = ‘Sarah‘>>> classmates[‘Michael‘, ‘Sarah‘, ‘Tracy‘]
雙層列表
  • list元素也可以是另一個list,比如:
>>> l = [‘python‘, ‘java‘, [‘asp‘, ‘php‘], ‘scheme‘]>>> len(l)4
  • 要注意s只有4個元素,其中s[2]又是一個list,如果拆開寫就更容易理解了:
>>> s = [‘asp‘, ‘php‘]>>> l = [‘phthon‘, ‘java‘, s, ‘scheme‘]>>> l[‘phthon‘, ‘java‘, [‘asp‘, ‘php‘], ‘scheme‘]
  • 要拿到‘php‘可以寫p[1]或者s[2][1],因此s可以看成是一個二維數組,類似的還有三維、四維……數組,不過很少用到。
  • 列表的拷貝:
    • 淺拷貝:只拷貝父物件,不會拷貝對象的內部的子物件
      • 方法一:
      >>> a = [1,2,3, [10, 20, 30]]>>> b = a.copy()>>> a[2] = 77>>> a[3][2] = 666>>> a[1, 2, 77, [10, 20, 666]]>>> b[1, 2, 3, [10, 20, 666]]
      • 方法二
      >>> import copy>>> a = [1,2,3, [10, 20, 30]]>>> b = copy.copy(a)>>> a[2] = 77>>> a[3][2] = 666>>> a[1, 2, 77, [10, 20, 666]]>>> b[1, 2, 3, [10, 20, 666]]
    • 深拷貝:拷貝對象及其子物件
    >>> import copy>>> a = [1,2,3, [10, 20, 30]]>>> b = copy.deepcopy(a)>>> a[2] = 77>>> a[3][2] = 666>>> a[1, 2, 77, [10, 20, 666]]>>> b[1, 2, 3, [10, 20, 30]]
    列表截取(分區操作)
  • 截取的範圍,包含左邊的下標值,不包含右邊的下標值
>>> l = [1, 2, 3, 4, 5, 6, 7 ]>>> l[1:4][2, 3, 4]
  • 下標值可以不寫,如果不寫,左邊下標值預設為0,右邊下標值為最大加一,即表示截取到最後一個資料
>>> l = [1, 2, 3, 4, 5, 6, 7 ]>>> l[:][1, 2, 3, 4, 5, 6, 7]>>> l[:4][1, 2, 3, 4]>>> l[2:][3, 4, 5, 6, 7]
  • 分區可以控制增長幅度,預設增長幅度為1
>>> l = [1, 2, 3, 4, 5, 6, 7 ]>>> l[1:6:1][2, 3, 4, 5, 6]>>> l[1:6:2][2, 4, 6]
  • 分區可以為負下標,漲幅也可以為負數
>>> l = [1, 2, 3, 4, 5, 6, 7 ]>>> l[-2:-4][]>>> l[-4:-2][4, 5]>>> l[-1:-5:-1][7, 6, 5, 4]>>> l[-1:-5:-2][7, 5]>>> l[::-1][7, 6, 5, 4, 3, 2, 1]
列表的遍曆
  • for迴圈遍曆列表
>>> l = [1,2,3,4,5]>>> for i in l:...     print(i)... 12345
  • while迴圈遍曆列表
>>> a = [1,2,3,4,5,6]>>> length = len(a)>>> indx = 0>>> while indx < length:...     print(a[indx])...     indx += 1... 123456
  • 雙層列表迴圈
>>> l = [["one", 1, "eins"], ["two", 2,"zwei"], ["three", 3,"drei"] ]>>> for k,v,w in l:...     print(k, "--", v, "--",w)... one -- 1 -- einstwo -- 2 -- zweithree -- 3 -- drei
列表內涵
  • 通過簡單方法創作列表
>>> a = [‘a‘, ‘b‘, ‘c‘]>>> b = [i for i in a]>>> b[‘a‘, ‘b‘, ‘c‘]
  • 對列表a中所有元素乘以10, 並產生新的列表
>>> a = [1, 2, 3, 4, 5]>>> b = [i*10 for i in a]>>> b[10, 20, 30, 40, 50]
  • 擷取50以內所有的偶數,並產生新的列表
>>> a = range(1, 51)>>> b = [i for i in a if i % 2 == 0]>>> b[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
  • 兩個列表中所有的元素相加,並輸出小於250的數值
>>> a = [i for i in range(1,4)]>>> a[1, 2, 3]>>> b = [i for i in range(100,400) if i % 100 == 0]>>> b[100, 200, 300]>>> c = [  m+n for m in a for n in b]>>> c[101, 201, 301, 102, 202, 302, 103, 203, 303]>>> c = [  m+n for m in a for n in b if m+n < 250]>>> c[101, 201, 102, 202, 103, 203]
列表指令碼操作符
  • 列表對 + 和 * 的操作符與字串相似。+ 號用於組合列表,* 號用於重複列表。
    • 使用 + 連結兩個列表
    >>> a = [1,2,3,4,5]>>> b = [5,6,7,8,9]>>> d = [‘a‘, ‘b‘, ‘c‘]>>> c = a + b + d>>> c[1, 2, 3, 4, 5, 5, 6, 7, 8, 9, ‘a‘, ‘b‘, ‘c‘]
    • 使用 * 巨集指令清單,相當於把n個列表拼接在一起
    >>> a = [1,2,3,4,5]>>> b = a *3>>> b[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
    • 使用 in, 相當於判斷元素是否包含在列表中
    >>> a = [1,2,3,4,5]>>> 3 in aTrue>>> 7 in aFalse
    列表函數
  • cmp(list1, list2) : 比較兩個列表的元素
  • len(list) : 返回列表元素的個數
  • max(list) : 返回列表元素的最大值
  • min(list) : 返回列表元素的最小值
  • list(seq) : 將可hash的資料轉化為列表

    列表方法:
  • list.append(obj) : 在列表末尾添加新的對象
  • list.count(obj) : 統計某個元素在列表中出現的次數
  • list.extend(seq) :在列表末尾一次性追加另一個序列中的多個值
  • list.index(obj) : 從列表中找到某個值第一個匹配值的索引位置
  • list.insert(index, obj) : 將對象插入列表
  • list.pop(index = -1) : 移除列表中的一個元素(預設是最後一個元素),並且返回改元素的值
  • list.remove(obj) : 移除列表中某個值的第一個匹配項
  • list.reverse() : 反向類表中元素
  • list.sort(cmp = None, key = None, reverse = False) : 對原列表進行排序

    字串與列表的相互轉換
  • 字串轉列表(split()函數)
    • 方法一:
    >>> str1 = "hi hello world">>> str1.split(" ")[‘hi‘, ‘hello‘, ‘world‘]
    • 方法二
    >>> str1 = "hi hello world">>> list(str1)[‘h‘, ‘i‘, ‘ ‘, ‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘ ‘, ‘w‘, ‘o‘, ‘r‘, ‘l‘, ‘d‘]
  • 列錶轉字串(join()函數)
>>> l = ["hi","hello","world"]>>> " ".join(l)‘hi hello world‘

Python List類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.