09_列表(list)


時間: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)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.1 列表的定義 List(列表) 是Python中使用最頻繁的數(shù)據(jù)類型,在其他語言中通常叫做數(shù)組 專門用于存儲...
    體面_5376閱讀 952評論 0 0
  • 〇、前言 本文共108張圖,流量黨請慎重! 歷時1個半月,我把自己學(xué)習(xí)Python基礎(chǔ)知識的框架詳細(xì)梳理了一遍。 ...
    Raxxie閱讀 19,602評論 17 410
  • Python簡介 Python歷史 Python 是由 Guido van Rossum 在八十年代末和九十年代初...
    莫名其妙的一生閱讀 1,149評論 0 2
  • 今天下了一個名叫簡書的APP,隨便翻翻看到一篇文章,里面提到一句話“每天寫一千個字”,我覺得是件很有意思的事情。從...
    一支粗人閱讀 154評論 0 1
  • 剛剛學(xué)習(xí)累了,刷了下朋友圈,看到以前一個很好的朋友發(fā)朋友圈秀恩愛,很吃驚,因為根本不知道他還有對象這事,一直以為他...

友情鏈接更多精彩內(nèi)容