定義
列表(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環境,於是我試了下)
#常規操作
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)
關於列表的知識點到這就基本結束了,後面有時間我再把排序這塊的高級用法補充一下,但就現階段來講掌握這些就差不多了。有什麼問題,請在下方評論區指出。
閱讀更多 每天一行代碼 的文章