02.24 自學Python-04 基本數據類型(三、列表List)


自學Python-04 基本數據類型(三、列表List)

定義

列表(list)是Python以及其他語言中最常用到的數據結構之一。Python使用使用中括號 [ ] 來解析列表。列表是可變的(mutable)——可以改變列表的內容。

列表的數據項不需要具有相同的類型:

list1 = ['Google', 'Runoob', 1997, 2000];#多類型

list2 = [1, 2, 3, 4, 5 ];

list3 = ["a", "b", "c", "d"];

基本操作

1.創建列表

list1 = [] #空列表

list2 = ['Google', 'Runoob', 1997, 2000];#多類型

2.更新列表

使用索引標記來為某個特定的、位置明確的元素賦值。意思就是不能為一個位置不存在的元素進行賦值。

list1 = [1,2,3,"python"]

list1[3] = "java"

#輸出 [1, 2, 3, 'java']

print(list1)

分片賦值:

list1 = list("hello wolrd")

#輸出 ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'l', 'r', 'd']

print(list1)

list1[6:] = list("python")

#輸出 ['h', 'e', 'l', 'l', 'o', ' ', 'p', 'y', 't', 'h', 'o', 'n']

print(list1)

#分片賦值語句進行插入

list1[6:6] = list("my")

#輸出 ['h', 'e', 'l', 'l', 'o', ' ', 'm', 'y', 'p', 'y', 't', 'h', 'o', 'n']

print(list1)

#分片賦值語句進行刪除

list1[6:8] = [] #刪除了'my'

#輸出 ['h', 'e', 'l', 'l', 'o', ' ', 'p', 'y', 't', 'h', 'o', 'n']

print(list1)

3.查看列表-列表中取值

list1 = [1,2,3]

#輸出2

print(list1[1])

#輸出3

print(list1[-1])#-1表示取最後一個

#輸出3 這種也是取最後一個元素

print(list1[len(list1) -1])#最後一個元素索引就是 列表長度-1

4.刪除列表元素

list1 = [1,2,3]

del list1[2]#del關鍵字

#輸出[1,2]

print(list1)

函數

1.len(list) 列表長度

list1 = [1,2,3]

#輸出3

print(len(list1))

2.max(list) 返回列表元素最大值

list1 = [1,2,3]

#輸出3

print(max(list1))

3.min(list)返回列表元素最小值

list1 = [1,2,3]

#輸出1

print(min(list1))

4.list(sep) 其他類型轉為list

參數必須是可迭代序列對象

#1.無參調用,將創建一個空列表

list1 = list()

#輸出[]

print(list1)

#2.字符串轉列表

strList = list('hello')

#輸出 ['h', 'e', 'l', 'l', 'o']

print(strList)

#3.元組轉列表

t = ('hello','world')

tupleList= list(t)

#輸出 ['hello', 'world']

print(tupleList)

#4.字典轉列表

d = {'name':'wang',"age":18}

dictList = list(d) #key轉為列表

#輸出 ['name', 'age']

print(dictList)

dictList = list(d.values()) #value轉為列表

#輸出 ['wang', 18]

print(dictList)

#5.集合轉列表

s = {'1','2','hello'}

sList = list(s)

#輸出 ['hello', '1', '2'] #注意:集合是無序的。為了讓更多朋友理解這裡的變化,我將另起一篇文章論證

print(sList)

方法

1.append(x)

在列表的末尾添加一個元素。相當於 a[len(a):] = [x] 。無返回值

a_list = [1,2,3]

a_list.append("python")

#輸出 [1, 2, 3, 'python']

print(a_list)

2.count(x)

返回元素 x 在列表中出現的次數。有返回值

a_list = [1,2,3,[1,2],[1,2]] #列表中可含列表

count = a_list.count([1,2])

#輸出 2

print(count)

3.extend(iterable)

使用可迭代對象中的所有元素來擴展列表。相當於 a[len(a):] = iterable 。無返回值。

a_list = [1,2,3,[1,2],[1,2]] #列表中可含列表

b_list = [4,5,6]

a_list.extend(b_list)

#輸出 [1, 2, 3, [1, 2], [1, 2], 4, 5, 6]

print(a_list)

#extend 方法修改了被擴展的列表,而原始的連接操作(+)則不然,它會返回一個全新的列表。

a_list = [1,2,3]

b_list = [4,5,6]

#輸出 [1, 2, 3, 4, 5, 6]

print(a_list + b_list)

#輸出[1, 2, 3]

print(a_list)

4.index(x[, start[, end ]])

返回列表中第一個值為 x 的元素的從零開始的索引。如果沒有這樣的元素將會拋出 ValueError 異常。可選參數 start(查找的起始位置) 和 end(查找的結束位置) 是切片符號,用於將搜索限制為列表的特定子序列。返回的索引是相對於整個序列的開始計算的,而不是 start 參數。有返回值

a_list = [123,'java','python','js','go']

#輸出2

print('python的位置:',a_list.index('python'))

#從第3個開始找

a_list = [123,'java','python','js','go',123,'python']

#輸出6

print('python的位置:',a_list.index('python',3))

5.insert(i, x)

在給定的位置插入一個元素。第一個參數是要插入的元素的索引,所以 a.insert(0, x) 插入列表頭部a.insert(len(a), x) 等同於 a.append(x) 。無返回值

a_list = ['java','python']

a_list.insert(1,'js')

#輸出 ['java', 'js', 'python']

print(a_list)

#插入頭部 index = 0 就行

#插

6.pop([i])

刪除列表中給定位置的元素並返回它。如果沒有給定位置,a.pop() 將會刪除並返回列表中的最後一個元素。(方法簽名中 i 兩邊的方括號表示這個參數是可選的,而不是要你輸入方括號。你會在 Python參考庫中經常看到這種表示方法)。默認為 i=-1,刪除最後一個列表值。有返回值

a_list = [1,2,3]

#輸出 刪除的元素是: 3

print('刪除的元素是:',a_list.pop())

#輸出 [1,2]

print(a_list)

7.remove(x)

移除列表中第一個值為 x 的元素。如果沒有這樣的元素,則拋出 ValueError 異常。無返回值

a_list = ['python','java','php','python']

a_list.remove('python') #移除列表中第一個python,後面那個python不會刪除

#輸出 ['java', 'php', 'python']

print(a_list)

a_list.remove('php')

#輸出 ['java', 'python']

print(a_list)

#拋出異常 ValueError: list.remove(x): x not in list

a_list.remove('rust')

8.reverse()

翻轉列表中的元素。無返回值

a_list = ['python','java','php','python']

a_list.reverse()

#輸出 ['python', 'php', 'java', 'python']

print(a_list)

9.sort(key=None,reverse=False)

對列表中的元素進行排序(參數可用於自定義排序,解釋請參見sorted())。無返回值

sorted(iterable, *, key=None, reverse=False)

根據 iterable 中的項返回一個新的已排序列表。

具有兩個可選參數,它們都必須指定為關鍵字參數。

key 指定帶有單個參數的函數,用於從 iterable 的每個元素中提取用於比較的鍵 (例key=str.lower)。 默認值為 None (直接比較元素)。

reverse 為一個布爾值。 如果設為 True,則每個列表元素將按反向順序比較進行排序。

有返回值

那麼list.sort 與 sorted 有什麼區別呢?

sorted函數是python的內置函數,與list.sort()基本是差不多的,參數都一樣。主要的區別在於:1.list.sort()是對已經存在的列表進行操作,進而可以改變進行操作的列表。而內建函數sorted返回的是一個新的list,而不是在原來的基礎上進行的操作.通常來說sorted() 更方便 ——— 但如果你不需要原列表,它會更有效率。

2. list.sort() 方法只是為列表定義的,而 sorted() 函數可以接受任何可迭代對象。

也就說想對一個列表排序,這兩種方式都是可以的

(python3字符串與整數不能放在一起排序,會報錯。python2可以,我電腦上也有python2.7環境,於是我試了下)

自學Python-04 基本數據類型(三、列表List)

python2.7能執行


自學Python-04 基本數據類型(三、列表List)

python3.7報錯


#常規操作

a_list = ['java','python','abc']

a_list.sort()

#輸出 ['abc', 'java', 'python']

print(a_list)

#降序

a_list = ['java','python','abc']

a_list.sort(reverse = True) #關鍵字參數

#輸出 ['python', 'java', 'abc']

print(a_list)

#key參數使用 key參數的值是一個函數

student_tuples = [('john','A',15),('jane','B',12),('dave','B',10)]

student_tuples.sort(key=lambda student:student[2])

#lambda函數,舉個例子

#def f(x):

#return x+2

#用lambda表示為 f = lambda x:x+2

#輸出 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

print(student_tuples)

10.clear()

移除列表中的所有元素。等價於del a[:]。無返回值

a_list.sort(reverse = True)

11.copy()

返回列表的一個淺拷貝,等價於a[:]。有返回值

a_list = ['java','python','abc']

b_list = a_list.copy()

#輸出 ['java', 'python', 'abc']

print(b_list)

關於列表的知識點到這就基本結束了,後面有時間我再把排序這塊的高級用法補充一下,但就現階段來講掌握這些就差不多了。有什麼問題,請在下方評論區指出。


分享到:


相關文章: