1. 程式人生 > >Python基礎 5.3 列表

Python基礎 5.3 列表

1  列表的概述

列表是一個有序的,可修改的,元素以逗號分割,以中括號包圍的序列。

列表的索引和字串的索引類似,但不完全相同,因為列表可以修改所以我們可以通過列表的索引來修改列表。

定義列表格式:

           變數名= [ 元素1,元素2,元素3,............]

列表的作用:儲存多個數據

2  python列表的定義以及檢視列表型別

name = ['zs','ls','ww']
print(name)
print(type(name))

['zs', 'ls', 'ww']
<class 'list'>

通過索引獲取列表中的元素:

ret = name[0]
print(ret)

zs

3. 列表的迴圈遍歷

 

names = ['zs','ls','ww']
for name in names:
    print(name) 

(1)列表的新增

append       追加,在列表的尾部加入指定的元素

extend         將指定的序列的元素依次追加到列表的尾部(合併),不會去重複內容

insert           將指定的元素插入到對應的索引位上,注意負索引倒序插入,超過索引就會在末尾插入

lst = ['zs','ls','ww']
lst.append('趙四')
print(lst)

['zs', 'ls', 'ww', '趙四']
lst = ['zs','ls','ww']
lst.append('趙四')
print(lst)
lst.insert(0,'唐僧')
print(lst)
lst.insert(2,'張三')
print(lst)

['zs', 'ls', 'ww', '趙四']
['唐僧', 'zs', 'ls', 'ww', '趙四']
['唐僧', 'zs', '張三', 'ls', 'ww', '趙四']
lst1 = ['zs','ls','ww']
lst2 = ['悟空','八戒','唐僧']
lst3 = lst1 + lst2
print(lst3)

['zs', 'ls', 'ww', '悟空', '八戒', '唐僧'] 
lst1 = ['zs','ls','ww']
lst2 = ['悟空','八戒','唐僧']
lst1.extend(lst2)
print(lst1)


['zs', 'ls', 'ww', '悟空', '八戒', '唐僧']

(2)列表的刪除

pop            彈出,返回並刪除指定索引位上的資料,預設刪除索引位-1的資料(從右向左刪除)

remove      從左向右刪除一個指定的元素

del             刪除整個列表或列表的資料,del是python的內建功能,不是列表獨有的

lst1 = ['zs','ls','ww','sq']
lst2 = ['悟空','八戒','唐僧','沙僧']
lst3 = lst1.pop()
print(lst3)
print(lst1)
#按照索引刪除
lst4 = lst2.pop(1)
print(lst2)
print(lst4)

'''
sq
['zs', 'ls', 'ww']
['悟空', '唐僧', '沙僧']
八戒
'''
lst1 = ['zs','ls','ww','sq']
lst2 = ['悟空','八戒','唐僧','沙僧']
lst1.remove('ww')
print(lst1)
#clear  清空列表
lst2.clear()
print(lst2)
'''
['zs', 'ls', 'sq']
[]
'''
lst1 = ['zs','ls','ww','sq']
del lst1[0]   #刪除指定元素
print(lst1)

 ['ls','ww','sq']

(3)列表的查詢 

注意 :列表沒有find方法

count        計數,返回要計數的元素在列表當中的個數

index        查詢,從左往右返回查詢到第一個指定元素的索引,如果沒有找到,報錯

lst1 = ['zs','ls','ww','sq']
lst1[0] = '修改'   #按照索引修改
print(lst1)

['修改', 'ls', 'ww', 'sq']
lst1 = ['zs','ls','ww','sq']
lst2 = lst1[1]              #按照索引查詢
print(lst2)
index = lst1.index('ls')      #按照關鍵字查詢
print(index)
num = lst1.count('ls')
print(num)         #計數   檢視關鍵字個數
lst3 = lst1[0:4:2]
print(lst3)         #  按照切片查詢

'''
ls
1
1
['zs', 'ww']
'''

(4)列表的排序

reverse         順序倒序

sort               按照  ASCII  碼錶順序進行排序

lst1 = ['zs','ls','ww','sq']
lst2 = ['悟空','八戒','唐僧','老沙']
lst1.sort()       #升序排序
print(lst1)
lst1.sort(reverse=True)      #降序排序
print(lst1)
lst2.reverse()         #翻轉
print(lst2)

'''
['ls', 'sq', 'ww', 'zs']
['zs', 'ww', 'sq', 'ls']
['老沙', '唐僧', '八戒', '悟空']
'''

4.  列表的深淺拷貝

淺拷貝

對於淺copy來說,第一層建立的是新的記憶體地址,而從第二層開始,指向的都是同一個記憶體地址,所以,對於第二層以及更深的層數來說,保持一致性。

lst1 = ['zs','ls','ww',['sq','ew']]
# lst2 = ['悟空','八戒','唐僧','老沙','小白龍']
lst2 = lst1.copy()
#檢視lst1和lst2中的內容
print(lst1)
print(lst2)
#修改lst2中的第一層內容
lst2[0] = '趙四'
print(lst1)
print(lst2)
#修改第二層內容
lst2[3][0] = '神奇'
print(lst1)
print(lst2)

'''
['zs', 'ls', 'ww', ['sq', 'ew']]
['zs', 'ls', 'ww', ['sq', 'ew']]
['zs', 'ls', 'ww', ['sq', 'ew']]
['趙四', 'ls', 'ww', ['sq', 'ew']]
['zs', 'ls', 'ww', ['神奇', 'ew']]
['趙四', 'ls', 'ww', ['神奇', 'ew']]
'''

深拷貝

匯入copy模組

import copy

copy.deepcopy()

import copy         
              #記得引入模組   否則會報錯
lst1 = ['zs','ls','ww',['sq','ew']]
lst2 = copy.deepcopy(lst1)
#檢視lst1和lst2中的內容
print(lst1)
print(lst2)
#修改lst2中的第一層內容
lst2[0] = '趙四'
print(lst1)
print(lst2)
#修改第二層內容
lst2[3][0] = '神奇'
print(lst1)
print(lst2)
'''
['zs', 'ls', 'ww', ['sq', 'ew']]
['zs', 'ls', 'ww', ['sq', 'ew']]
['zs', 'ls', 'ww', ['sq', 'ew']]
['趙四', 'ls', 'ww', ['sq', 'ew']]
['zs', 'ls', 'ww', ['sq', 'ew']]
['趙四', 'ls', 'ww', ['神奇', 'ew']]
'''