時間:2018-11-02 作者:魏文應(yīng)
一、列表
什么是列表
列表是用于存儲一些有序數(shù)據(jù)對象。
創(chuàng)建列表
創(chuàng)建列表,通過中括號 [ ] 來創(chuàng)建列表:
my_list = []
print(type(my_list))
創(chuàng)建列表時,為列表指定元素:
my_list = [10, 2, 4, 7, 9]
print(my_list)
可以同一個列表存不同類型對象:
my_list = [10, None, 'hello', 1.2, True]
print(my_list)
列表索引
索引是從 0 開始的整數(shù),列表第一個位置索引為 0,第二個位置索引為1 :
my_list = [10, 2, 4, 7, 9]
print(my_list[0])
上面就是打印第一個元素 10 ??梢酝ㄟ^ len() 函數(shù)獲取列表的索引:
my_list = [10, 2, 4, 7, 9]
print(len(my_list))
負(fù)數(shù)索引
負(fù)數(shù)表示倒數(shù)第幾個,比如 -2 負(fù)2,表示倒數(shù)第 2 個元素:
students = ['天龍八部', '倚天屠龍記', '俠客島']
print(students[-2])
二、切片
切片,就是從現(xiàn)有列表中,獲取一個子列表,比如:
students = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print(students[1:4])
打印結(jié)果如下:
['倚天屠龍記', '俠客島', '鹿鼎記']
通過切片獲取指定的元素:
- 做切片操作是,總會返回一個新的列表,不會影響原來的列表。
- 通過切片獲取元素時,包括起始位置的元素,不會包括結(jié)束位置 的元素。
省略參數(shù)
下面,是從索引1的位置,一直到最后:
students = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print(students[1:])
下面則是,從開始的位置,一直到索引值是 3 的位置(不包括 3):
students = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print(students[:3])
添加步長
語法:列表[起始:結(jié)束:步長]
比如:
students = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print(students[0:5:2])
打印結(jié)果為:
['天龍八部', '俠客島', '雪山飛狐']
也就是隔一個步長取一個。步長不能是 0 ,但 步長可以是負(fù)數(shù),則從列表的后部往前倒著?。?/p>
students = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print(students[::-1])
注意:負(fù)數(shù)時,如果有范圍,則要這么寫:
students = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print(students[4:0:-1])
為什么要把 4 放在前面,0 放在后面呢?這是因為 [start:end:step] ,也就是start是起始位置,你倒著取,start當(dāng)然是原來的最后一個參數(shù)啦。
三、列表操作
列表拼接
通過加號 + 實現(xiàn):
my_list = [1, 2, 3] + [4, 5, 6]
print(my_list)
打印結(jié)果如下:
[1, 2, 3, 4, 5, 6]
列表重復(fù)
通過乘號 * 實現(xiàn):
my_list = [1, 2, 3] * 3
print(my_list)
打印結(jié)果如下:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
元素檢測
查看元素是否存在于列表中,使用 in 關(guān)鍵字:
my_list = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print('天龍八部' in my_list)
上面檢測 '天龍八部' 這個元素是否在 my_list 這列表中,打印結(jié)果如下:
True
如果是檢查某個元素是否 不存在 于列表中,使用 not in 關(guān)鍵字:
my_list = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print('天龍八部' not in my_list)
發(fā)現(xiàn) '天龍八部' 在列表中,打印結(jié)果如下:
False
查看元素最大值和最小值
對于數(shù)值型列表,我們經(jīng)常要找到其中的最大值或者最小值,例如:
arr = [1, 2, 3, 4, 5, 6, 7]
print(min(arr), max(arr))
函數(shù) min() 取最小值, 函數(shù) max() 取最大值,打印結(jié)果如下:
1 7
獲取 index
獲取索引值,例如:
my_list = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐']
print(my_list.index('天龍八部'))
這樣,就會打印出元素 天龍八部 的索引值,打印結(jié)果如下:
0
如果元素在列表中有重復(fù),它查找返回的是 首先索引到的索引值 。還可以指定索引范圍:
my_list = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐', '天龍八部', '天龍八部']
print(my_list.index('天龍八部', 3, 7))
上面是在索引值為 3 到 7(不包括7)中的元素查找。
計算元素數(shù)目
統(tǒng)計指定元素在指定列表中出現(xiàn)的次數(shù):
my_list = ['天龍八部', '倚天屠龍記', '俠客島', '鹿鼎記', '雪山飛狐', '天龍八部', '天龍八部']
print(my_list.count('天龍八部'))
上面代碼,統(tǒng)計了 天龍八部 這個元素個數(shù),打印結(jié)果如下:
3
修改列表中的元素
修改列表中的某個元素:
stus = ['孫悟空', '沙和尚' ,'豬八戒', '唐僧', '蜘蛛精', '白骨精']
stus[0] = 'sunwukong'
print(stus)
將元素 孫悟空 修改為了 sunwukong ,打印結(jié)果如下:
['sunwukong', '沙和尚', '豬八戒', '唐僧', '蜘蛛精', '白骨精']
刪除元素,刪除列表中的某個元素:
stus = ['孫悟空', '沙和尚' ,'豬八戒', '唐僧', '蜘蛛精', '白骨精']
del stus[0]
print(stus)
上面代碼,刪除了元素 孫悟空,打印結(jié)果如下:
['沙和尚', '豬八戒', '唐僧', '蜘蛛精', '白骨精']
可以同時修改列表的多個元素,通過 切片 實現(xiàn),這時,給切片進(jìn)行賦值時,只能使用序列 :
stus = ['孫悟空', '沙和尚', '豬八戒', '唐僧', '蜘蛛精', '白骨精']
stus[0:2] = ['紅孩兒', '牛魔王']
print(stus)
同時修改了索引值為 0 和 1 的元素值,打印結(jié)果如下:
['紅孩兒', '牛魔王', '豬八戒', '唐僧', '蜘蛛精', '白骨精']
四、列表的方法
末尾添加 (append)
通過 append() 方法在列表的末尾添加一個元素:
stus = ['孫悟空', '豬八戒', '沙和尚']
print('原列表:', stus)
stus.append('唐僧')
print('append后的列表:', stus)
這樣,唐僧 這個元素就會被添加到 stus 這個列表的后面,打印結(jié)果如下:
原列表: ['孫悟空', '豬八戒', '沙和尚']
append后的列表: ['孫悟空', '豬八戒', '沙和尚', '唐僧']
插入元素(insert)
往列表中插入一個元素,通過 insert() 方法:
stus = ['孫悟空', '豬八戒', '沙和尚']
print('原列表:', stus)
stus.insert(1, '唐僧')
print('insert后的列表:', stus)
在 stus 列表索引值為 1 的位置,插入一個元素 唐僧 ,打印結(jié)果如下:
原列表: ['孫悟空', '豬八戒', '沙和尚']
insert后的列表: ['孫悟空', '唐僧', '豬八戒', '沙和尚']
清除元素(clear)
清空列表中的所有元素:
stus = ['孫悟空', '豬八戒', '沙和尚']
stus.clear()
print(stus)
所有元素都被清空了,打印結(jié)果如下:
[]
根據(jù)索引刪除元素(pop)
根據(jù)索引值,刪除一個元素并返回被刪除的元素值:
stus = ['孫悟空', '豬八戒', '沙和尚']
a = stus.pop(2)
print('刪除的元素:', a)
print('刪除后的列表:', stus)
這樣,就刪除了列表中索引值為 2 的元素。打印結(jié)果如下:
刪除的元素: 沙和尚
刪除后的列表: ['孫悟空', '豬八戒']
del() 也能實現(xiàn)類似的效果,但是沒有返回值:
stus = ['孫悟空', '豬八戒', '沙和尚']
del(stus[2])
print('刪除后的列表:', stus)
根據(jù)值刪除元素(remove)
刪除指定值的元素,如果有多個值相同,只刪除靠前的一個:
stus = ['孫悟空', '豬八戒', '沙和尚', '孫悟空']
stus.remove('孫悟空')
print('刪除后的列表:', stus)
上面,把第一個元素 孫悟空 給刪除了,打印結(jié)果如下:
刪除后的列表: ['豬八戒', '沙和尚', '孫悟空']
反轉(zhuǎn)列表(revert)
將列表的元素位置反轉(zhuǎn):
stus = ['孫悟空', '豬八戒', '沙和尚']
stus.reverse()
print(stus)
元素的位置改變了,打印結(jié)果如下:
['沙和尚', '豬八戒', '孫悟空']
元素排列(sort)
通過 sort() 方法進(jìn)行排列:
stus = ['a', 'c', 'b', 'f', 'g', 'm', 'i']
stus.sort()
print(stus)
上面,安裝 ASCII 碼表進(jìn)行 升序排列,打印結(jié)果如下:
['a', 'b', 'c', 'f', 'g', 'i', 'm']
如果需要 ASCII 表 降序排列 ,打印結(jié)果如下:
stus = ['a', 'c', 'b', 'f', 'g', 'm', 'i']
stus.sort(reverse=True)
print(stus)
通過反轉(zhuǎn) reverse 參數(shù),安裝 ASCII 碼表進(jìn)行降序排列,打印結(jié)果如下:
['m', 'i', 'g', 'f', 'c', 'b', 'a']
遍歷列表
可以使用循環(huán)語句來實現(xiàn),比如使用 while 語句:
stus = [1, 2, 3]
i = 0
while i < len(stus):
print(stus[i])
i += 1
列表中的元素將被依次打印出來。更好 方法是用 for 語句:
stus = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for s in stus:
print(s)