Python基礎入門—列表list

列表

  • 列表是一種可變的數據類型
  • 列表中的數據類型不限
  • 列表中的多個元素之間用逗號進行分割
  • 最外層用[ ]括起來

列表的定義

  1. list()來建立
s = 'python'      
L = list(s)
L

['p', 'y', 't', 'h', 'o', 'n']
  1. []
l = ['p', 'y', 't', 'h', 'o', 'n']
l
type(l)

['p', 'y', 't', 'h', 'o', 'n']
list

列表的索引和切片

列表:有序的序列,因此每個數據都有惟一對應的索引值。
第一個元素對應的索引值是0,和字符串是同樣的python

語法:列表[start:stop:step]app

  • 列表[起始位置:終止位置:步長和方向],開始的位置包含在內,終止的位置不包含在內
  • 步長的默認值爲1,當步長設置爲正整數,表明方向從左往右,當步長設置爲負整數,表明從後往前進行切片
  • 起始位置和終止位置,若是不填,表明從頭至尾全部數據

Examples:設計

list1 = ['life', 'is',  'short', 'I', 'use', 'python']
list1[2]

short
list2= [1, 2, 3, 'Hello', [1, 2, [1, [1, '新中國', 3], 3], 4, 5] ]
list2[4][2][1]

[1, '新中國', 3]

增長列表元素

經常使用的5種方法code

list.append(要添加元素) 在列表末尾添加元素
list.extend(要添加的元素) 在列表末尾添加列表
list.insert(插入後的索引,插入的對象) 在列表制定位置插入對象

Examples:htm

list1 = ['life', 'is', 'short']
list2 = ['I', 'use', 'python' ]
list1.extend(list2)
lsit1 

['life', 'is', 'short', 'I', 'use', 'python']
list1 = ['life', 'is', 'I', 'use', 'python']
list1.insert(2,'short')
lsit1

['life', 'is', 'short', 'I', 'use', 'python']

列表對象的刪除

del 列表名[要刪除元素的索引值] 刪除對應索引的元素
列表名.clear() 清空列表全部元素
列表名.pop(要刪除元素的索引值) 默認刪除最後一個,並返回這個被刪除的元素。
列表名.remove(元素名) 用於移除列表中某個值的第一個匹配項

列表對象的查找

in 和 not in 判斷元素存在否
列表.index(尋找的對象,開始索引,結束索引) 元素首次出現的索引
列表.count(尋找的對象) 得到某個元素元素出現次數

Examples:對象

a=[1,'a', [2, 5]]
2 in a

False
a=['我','愛','北','京','天','安','門','天','安','門',]
a.count("門")

2

列表的排序

  1. 降序和升序排列
    語法:列表.sort(reverse=True/False)
  • 此方法會將列表按特定順序從新排列
  • 括號內的參數能夠不寫,默認升序排列
  • reverse的英文意思是翻轉,若是填寫了reverse=True就意味着列表會降序排列blog

    Examples:排序

    list1 = [1, 9, 7, 6, 5, 8, 6, 8]
    list1.sort()
    list1 
    
    [1, 5, 6, 6, 7, 8, 8, 9]  # 比較對象數據類型一致,不一樣的數據類型之間沒有某種維度上的大小比較
  1. 列表反轉
    語法: 列表.reverser()將list全部元素反轉

列表的深淺拷貝

  1. 淺拷貝
    淺拷貝只拷貝容器中元素的地址
    淺拷貝是在另外一塊地址中建立一個新的變量或容器,可是容器內的元素的地址均是源對象的元素的地址的拷貝。
    也就是說新的容器中指向了舊的元素( 新瓶裝舊酒 )這裏新的容器能夠是列表或字典等索引

  2. 深拷貝
    深拷貝,徹底拷貝了一個副本,容器內部元素地址都不同(有特定要求)
    對於元素爲不可變類型,並無開闢新的地址
    對於元素爲可變類型 ,則從新開闢新的地址

小結:對於深拷貝,目的就是要建立一個玩玩全全獨立的副本,就意味着全部的一切都應該在新的地址上。
一、對於列表或者字典自己,深拷貝結果下,地址是改變了的,也就是說瓶子是換新了的 。
二、全部可變類型的元素也是有了新的地址的。
三、對於不可變類型的元素,地址沒有變,那豈不是相互有影響?不,若是你改變了不可變類型,就會在新的地址下儲存新的數據了,也是沒有影響的。
總之,底層設計的很是合理。

中間設計代碼驗證可參考Python基礎入門—字典dict相關內容

相關文章
相關標籤/搜索