Python入門之列表
java
1、什麼是列表python
爲了是程序能方便的存儲的操做數據,python語言提供一些內置的數據結構。shell
例如:列表、元組、字典和集合等。所謂的「內置」,指的是他們是python語言的一部分,編程
所以在程序中能夠直接使用他們。數組
一、列表的結構數據結構
python的列表,至關於其餘編程語言的數組。app
>>> mylist = [1,2,3,4]編程語言
>>> mylistide
[1, 2, 3, 4]函數
二、列表的特色
● 列表中全部的數據都是按順序排列的,也就是說,列表屬於順序類型
● 列表找那個的全部數據都是有兩個整數類型的索引,經過制定索引總能映射到惟一肯定的數據
● 列表中能夠存在重複的數據
● 列表中能夠保存任何類型的數據,多種類型的數據能夠混合存儲。
● 列表能夠根據須要動態的伸縮,也就是說,系統會根據須要動態的分配和回收內存。所以無需事先聲明列表的容量。
2、列表的建立
● 列表中能夠存儲任意類型的對象
建立列表的兩種方法
一、使用中括號[]
L = ['python',19,True] print (L) ['python', 19, True]
空列表建立
L = []
二、使用list的構造方法
L = list(range(0,8,2)) print (L) [0, 2, 4, 6]
空列表的建立
L = list() print (L) []
3、列表的增刪改查
一、列表查操做
a)、列表中元素的索引
列表中的每一個元素都有兩個整數類型的索引
0 1 2 3 4 正數索引
--------------------------
| a | b | c | d | e | 列表
--------------------------
-5 -4 -3 -2 -1 負數索引
b)、獲取列表中指定元素的索引
● index方法
查找元素的指定索引,若是索引不存在會拋出值錯誤。能夠指定查找索引的start和stop。
L = [1,2,6,9,4,6,7] print (L.index(2)) # 1 print (L.index(6)) # 2 相同元素返回第一個元素的索引 print (L.index(11)) #ValueError: 11 is not in list 不存在的元素,會拋出值錯誤 print (L.index(2,0,5)) # 1 查找元素2的索引,從索引0開始,至5結束,但不包含5 print (L.index(6,3,6)) # 5 查看元素6的索引,從索引0開始,至6結束,但不包含6
c)、使用[n]得到列表中元素,但一次只能得到一個元素
L = [1, 2, 6, 9, 4, 6, 7] print (L[0]) # 1 獲取索引爲0的元素 print (L[-3]) # 4 獲取索引爲-3的元素 print (L[-8]) #IndexError: list index out of range 若是索引不存在,則索引越界錯誤。
d)、使用切片或者列表中的元素,一次得到多個元素
● 語法格式 [start:stop:step]
一、獲得的切片仍然是列表,是原始列表片斷的一份拷貝
二、獲得的切片不包括索引stop對應的元素
三、若是不指定step,其默認值爲1,此時語法格式能夠簡化爲[start:stop]
四、當step爲正數時,
若是不指定start,切片的第一個元素默認爲列表的第一個元素
若是不指定stop,切片的最後一個元素默認是列表的最後一個元素
從索引start開始計算切片
五、當step爲負數時,
若是不指定start,切片的第一個元素默認是列表的最後一個元素
若是不指定stop,切片的最後一個元素默認爲列表的第一個元素
從索引start開始往前計算切片
L = [5,6,3,1,9,8,4] print (L[1:5]) # [6, 3, 1, 9] print (L[::]) # [5, 6, 3, 1, 9, 8, 4] 列表全部值 print (L[::-1]) # [4, 8, 9, 1, 3, 6, 5] 列表全部值反轉 print (L[:3:-1]) #[4, 8, 9] step爲負數時,不指定start,則爲最後一個元素,stop爲3則是索引3,步長爲1 print (L[-3::-1]) #[9, 1, 3, 6, 5] step爲負數時,不指定stop,則爲最後一個元素,start爲索引-3對應的值,步長爲1
● 索引切片是容許越界的
L = [5, 6, 3, 1, 9, 8, 4] print (L[:100]) #[5, 6, 3, 1, 9, 8, 4] #起始索引不指定,默認爲第一個元素.但100超出最大索引,則打印所有列表 print (L[-100:]) #[5, 6, 3, 1, 9, 8, 4] #結束索引不指定,默認爲最後一個元素,起始索引爲-100(-7最後一個負數索引),打印所有列表
● 調用slice構造方法
slice() list[slice(start,stop,step)] L = [5, 6, 3, 1, 9, 8, 4] print (L[slice(1,5,2)]) # [6, 1] print (L[1:5:2]) # [6, 1] print (L[slice(None,None,None)]) #[5, 6, 3, 1, 9, 8, 4],默認值爲None print (L[::]) #[5, 6, 3, 1, 9, 8, 4]
e) 、'in' or 'not in'檢查元素是否存在列表中
L = [5, 6, 3, 1, 9, 8, 4] in print (3 in L) #存在則爲True True print (11 in L) #不存在爲False False not in print (1 not in L) 1存在列表中,not in返回爲False False print (11 not in L) 11不存在列表中,in返回爲True True
二、列表增操做
a)、使用append()函數
''' append()方法,在末尾添加值 ''' L = [1,2,3,4] L.append(5) print (L) #[1, 2, 3, 4, 5] L.append([7,8]) print (L) #[1, 2, 3, 4, 5, [7, 8]]
b)、使用extend()方法,將全部元素依此添加至末尾
''' 調用extend方法,list.extend([])小括號中是方括號 ''' L = [1,2,3,4] L.extend([1,2]) print (L) [1, 2, 3, 4, 1, 2]
c)、調用insert方法
''' 調用insert方法,將值插入指定位置 ''' L = [1,2,3,4] L.insert(1,6) print (L) #[1, 6, 2, 3, 4] #在列表末尾 L.insert(len(L),10) print (L) #[1, 6, 2, 3, 4, 10]
d)、爲指定的切片賦予一個新值
L = [2,3,4,1] L[2:2] = [5,6] print (L) L = [2,3,4,1] L[len(L):] = [7,8] print (L)
三、列表改操做
想要修改列表中的元素,有兩種常見的方式
a)、爲指定索引的元素賦予一個新值(一次只修改一個元素)
''' 將索引爲1對應的元素值改成9,一次只修改一個值 ''' L = [3,2,0,1,2,1] L[1] = 9 print (L) [3, 9, 0, 1, 2, 1]
b)、指定多個索引,一次修改多個元素
''' 修改元素索引1:4的值,對應值要使用[] 左邊取得的索引值能夠和右邊賦予的值個數不相同 ''' L = [3,2,0,1,2,1] L[1:4] = [4,5,6] print (L) [3, 4, 5, 6, 2, 1] L[1:4] = [3,7] print (L) [3, 3, 7, 2, 1] L[2:3] = [9] print (L) [3, 3, 9, 2, 1]
四、列表刪操做
a) 、調用方法remove一次只刪除一個元素,若是有相同元素,則刪除第一個
L = [2,3,4,5,6] L.remove(3) print (L) L = [3,4,3,1,2] L.remove(3) print (L)
b)、調用方法pop,一次只刪除一個指定索引的元素。
若是指定的索引不存在,會拋出index error,索引越界。若是不指定pop刪除的索引,那麼將刪除列表中最後一個元素。
L = ['a','b','c','d','e'] print (L.pop(1)) # b,pop實際有返回值 print (L) # ['a', 'c', 'd', 'e'] print (L.pop()) print (L) #['a', 'b', 'c', 'd']
c)、使用del語句,一次至少刪除一個或多個元素
L = [1,2,3,4,5,6] del L[1] print (L) del L[1:3] print (L)
d)、給指定的切片賦值一個空列表,一次至少刪除一個或多個元素
L = [1,2,3,4,5,6,7,8] L[2:3] = [] print (L) #[1,2,3,5,6,7,8] L[3:6] = [] print (L) ##[1,2,3,8]
e)、調用方法clear清空列表
L = [1,2,3,4,5] L.clear() print (L) #[]
4、使用加法和乘法對列表進行操做
一、使用加法對列表進行操做,當使用+=運算符時候會對列表自己產生影響
L1 = [1,2] L2 = [3,4] L3 = L1 + L2 print (L1,L2,L3) #列表之間相加 [1, 2] [3, 4] [1, 2, 3, 4] L1 = L2 = [1,2] L1 += [3,4] print (L1,L2) #使用+=運算符會對L2也產生影響 [1, 2, 3, 4] [1, 2, 3, 4] L1 = [1,2] L2 = L1[:] L1 += [3,4] print (L1,L2) #[1, 2, 3, 4] [1, 2]
二、使用乘法對列表進行操做,使用*=運算符時候會對列表自己產生影響
L1 = [1,2,3] L2 = [4,5,6] L1 = L1 * 2 print (L1) #[1, 2, 3, 1, 2, 3] L1 = L2 = [1,2] L1 *= 2 print (L1,L2) #[1, 2, 1, 2] [1, 2, 1, 2] L1 = [0] L1 *= 5 print(L1) #[0, 0, 0, 0, 0] 可用於建立指定元素個數的列表
5、列表反轉
一、調用方法 reverse,對列表中全部元素進行反轉
L = [1,2,3,4,5] L.reverse() print (L)
二、調用內置函數reversed,使用reversed進行反轉的列表不發生改變,reversed返回值是一個迭代器對象
L = [1,2,3,4,5] L1 = reversed(L) print (L1) #<list_reverseiterator object at 0x7f8f070f1390> print (list(L1)) #[5, 4, 3, 2, 1]
6、列表的排序
一、調用方法sort()
#sort(),會對列表自己形成影響 L2 = ['java','python','shell'] L2.sort(key = len) print(L2) #根據字符串長度進行排序,['java', 'shell', 'python'] L2 = [1,3,4,2,6,9,8,7] L2.sort() print(L2) #[1, 2, 3, 4, 6, 7, 8, 9]
二、調用內置函數sorted()
sorted(),不會對列表自己形成影響 L2 = ['java','shell','python'] print(sorted(L2,key = str.upper)) #['java', 'python', 'shell'] L2 = [1,3,4,2,6,9,8,7] print(sorted(L2)) #[1, 2, 3, 4, 6, 7, 8, 9] print(L2) #[1, 3, 4, 2, 6, 9, 8, 7]