1. 程式人生 > >Python(6)--列表 Python(5)--資料結構-序列-通用操作

Python(6)--列表 Python(5)--資料結構-序列-通用操作

列表:

  序列中已經使用了列表

  列表是用[]定義的序列,[]內包含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']