Python(6)--列表 Python(5)--資料結構-序列-通用操作
阿新 • • 發佈:2018-11-24
列表:
序列中已經使用了列表
列表是用[]定義的序列,[]內包含0個或者多個元素
列表是可變的,可以修改其內容
函式list:
將序列作為list函式的引數,常見列表
#字串建立列表 >>> s = "hello" >>> l = list(s) >>> l ['h', 'e', 'l', 'l', 'o'] # 列表轉換為字串 >>> "".join(l) 'hello'
列表基本操作:
列表可以執行所有的標準序列操作: Python(5)--資料結構-序列-通用操作
修改列表:
1、元素賦值
# 使用索引給特定的元素賦值 >>> s = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> s[2] = "a" >>> s [1, 2, 'a', 4, 5, 6, 7, 8, 9] # 不能給不存在的元素賦值 >>> s[10] = "b" Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list assignment index out of range
2、刪除元素
# 使用del語句刪除元素 >>> s [1, 2, 'a', 4, 5, 6, 7, 8, 9] >>> del s[6] >>> s [1, 2, 'a', 4, 5, 6, 8, 9]
3、切片賦值
# 給多個元素賦值 >>> a = list("python") >>> a ['p', 'y', 't', 'h', 'o', 'n'] >>> a[3:] = list("xxx") >>> a ['p', 'y', 't', 'x', 'x', 'x'] # 替換不同長度的序列 >>> a = list("python") >>> a ['p', 'y', 't', 'h', 'o', 'n'] >>> a[1:] = list("z") >>> a ['p', 'z'] # 不替換原有元素下插入新元素,使用[1:1]得到是空切片,通過替換它來插入 >>> a ['p', 'z'] >>> a[1:1] [] >>> a[1:1] = [6, 6, 6] >>> a ['p', 6, 6, 6, 'z'] # 刪除,使用空序列來替換 >>> a ['p', 6, 6, 6, 'z'] >>> a[1:4] = [] >>> a ['p', 'z']
列表方法:
append方法,將一個物件追加到列表末尾
>>> a ['p', 'z'] >>> a.append(6) >>> a ['p', 'z', 6]
clear方法就地清空列表
>>> a ['p', 'z', 6] >>> a.clear() >>> a []
copy方法賦值列表
# 常規的複製只是將另一個名字關聯到列表,也就是兩個名字指向同一個列表 >>> a = [1, 2, 3] >>> b = a >>> b[1] = "a" >>> a [1, 'a', 3] >>> b [1, 'a', 3] # 如果要讓a和b指向不同的列表,需要將b關聯到a的副本,跟a[:]和list(a)類似,都是賦值a >>> a = [1, 2, 3] >>> b = a.copy() >>> b[1] = "a" >>> a [1, 2, 3] >>> b [1, 'a', 3]
count方法計算指定元素在列表中出現的次數
>>> a = [1, 2, 3, 2,2,1,2] >>> a.count(2) 4 >>> a = ["a", [1,2], 1, 2, [1, 2]] >>> a.count([1, 2]) 2
extend方法使用一個列表來擴充套件另一個列表
>>> a = [1, 2, 3] >>> b = ["a", "b"] >>> a.extend(b) >>> a [1, 2, 3, 'a', 'b'] # 看著跟拼接差不多,但是拼接是不會修改原來的列表的,是返回一個新列表 >>> a = [1, 2, 3] >>> b = ["a", "b"] >>> a + b [1, 2, 3, 'a', 'b'] >>> a [1, 2, 3]
index方法在列表中查詢指定元素第一次出現的索引,找不到會報錯
>>> a = [1, 2, 3, 2,2,1,2] >>> a.index(2) 1 >>> a.index("a") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 'a' is not in list
insert方法用於將一個物件插入列表
>>> a = [1, 2, 3, 2,2,1,2] >>> a.insert(3, "aaa") >>> a [1, 2, 3, 'aaa', 2, 2, 1, 2]
pop方法從列表刪除一個元素,預設為最後一個,可以指定索引,並返回這個元素
pop是唯一既修改列表又返回一個非None值的列表方法
>>> a [1, 2, 3, 'aaa', 2, 2, 1, 2] >>> a.pop() 2 >>> a [1, 2, 3, 'aaa', 2, 2, 1] >>> a.pop(3) 'aaa' >>> a [1, 2, 3, 2, 2, 1]
remove方法用於刪除第一個為指定值的元素
修改列表但是不返回值
>>> a [1, 2, 3, 2, 2, 1] >>> a.remove(2) >>> a [1, 3, 2, 2, 1]
reverse方法將列表元素順序反轉,修改列表不反悔任何值
>>> a [1, 3, 2, 2, 1] >>> a.reverse() >>> a [1, 2, 2, 3, 1] # reversed安相反的順序迭代序列,返回的是一個迭代器,可以使用list將返回的物件轉換為列表 >>> a [1, 2, 2, 3, 1] >>> list(reversed(a)) [1, 3, 2, 2, 1]
sort方法用於對列表就地排序
sorted用於講一個序列排序,返回一個列表
>>> x = [4, 7, 5, 2, 1, 9] >>> x.sort() >>> x [1, 2, 4, 5, 7, 9] # 如果想要保留原來的xulie,方法一是:先將y關聯到x的副本,在對y進行排序 >>> x = [4, 7, 5, 2, 1, 9] >>> y = x.copy() >>> y.sort() >>> x [4, 7, 5, 2, 1, 9] >>> y [1, 2, 4, 5, 7, 9] # 方法二是:使用函式sorted,sorted可以用於任何序列,返回的始終是一個列表 >>> x = [4, 7, 5, 2, 1, 9] >>> y = sorted(x) >>> x [4, 7, 5, 2, 1, 9] >>> y [1, 2, 4, 5, 7, 9] >>> x = "python" >>> sorted(x) ['h', 'n', 'o', 'p', 't', 'y']
高階排序:sort和sorted的引數
# 方法sort接受兩個可選引數:key和reverse。 # key可以設定為一個用於排序的函式,使用這個函式為每個元素建立一個鍵,再根據這些鍵進行排序,比如要根據元素長度排序,將key設定為函式len >>> x = ["a","ddd","vv","asdfg"] >>> x.sort(key=len) >>> x ['a', 'vv', 'ddd', 'asdfg'] # reverse可以指定為True或者False,指出是否按照相反的順序排序 >>> x = ["a","ddd","vv","asdfg"] >>> x.sort(key=len, reverse=True) >>> x ['asdfg', 'ddd', 'vv', 'a'] # 函式sorted也接收這兩個引數 >>> x = ["a","ddd","vv","asdfg"] >>> sorted(x, key=len) ['a', 'vv', 'ddd', 'asdfg'] >>> sorted(x, key=len, reverse= True) ['asdfg', 'ddd', 'vv', 'a']