创建列表
列表是 Python 中用于存储一系列元素的数据结构,列表中的元素可以是字符串、数字、布尔值、其他列表、字典等。在 Python 中,有三种方法可以创建列表:使用方括号、list()
函数和 split()
函数切分字符串。
方括号
将元素放在方括号内,用逗号分隔,即可创建一个列表。通常我们会将列表赋值给一个变量。例如,a
是一个字符串列表,b
是一个数字列表,c
是一个包含字符串、数字和列表的列表。
bash
a = ['apple','banana','orange']
b = [1,2,3,4,5]
c = ['apple',1,2,3,['dog','cat']]
print(type(a)) # <class 'list'>
print(type(b)) # <class 'list'>
print(type(c)) # <class 'list'>
list() 函数
list()
函数可以创建一个空列表,或者将可迭代的数据(如元组、字符串、集合或字典)转换成列表。,下方的例子 b 会将元组成列表,c 是空的列表,d 则是将 apple
字符串转成成五个字符串的列表。
scss
a = ('apple','banana','orange')
b = list(a) # 元组转换成列表
c = list() # 创建一个空列表
d = list('apple') # 字符串转换成列表
print(b) # ['apple', 'banana', 'orange']
print(c) # []
print(d) # ['a', 'p', 'p', 'l', 'e']
split() 函数
split()
函数可以根据指定的分隔符将字符串分割成列表。下图的例子,会根据 .
符号,将字符串切分成列表,由于有多个 .
在一起,拆分时会出现空的字符串元素。
css
a = 'apple...banana...orange'
b = a.split('.') # 根据'.'分隔符分割字符串
print(b) # ['apple', '', '', 'banana', '', '', 'orange']
合并列表
合并列表有两种方法:使用 +
运算符和 extend()
方法。
使用 + 号
使用 +
运算符可以将两个列表合并,类似于字符串的拼接。在 + 号右方的列表中的元素会追加在左方列表的后面。
css
a = ['a1','a2','a3']
b = ['b1','b2','b3']
c = a + b
print(c) # ['a1', 'a2', 'a3', 'b1', 'b2', 'b3']
extend() 函数
extend()
函数可以将一个列表的内容添加到另一个列表的末尾。
css
a = ['a1','a2','a3']
b = ['b1','b2','b3']
a.extend(b)
print(a) # ['a1', 'a2', 'a3', 'b1', 'b2', 'b3']
注意: extend()
方法会改变原列表,但不返回新列表 ,所以如果写成 c = a.extend(b)
,c
将会是 None
。
css
a = ['a1','a2','a3']
b = ['b1','b2','b3']
c = a.extend(b)
print(c) # none
获取列表元素
要使用列表,我们需要读取列表中的内容,Python 提供了两种方法来读取列表元素:通过索引和切片。
使用索引获取元素
列表中的每个元素都有一个索引号,通过索引可以直接访问元素。列表中第一个元素的索引为0,第二个 offset 为 1,依此类推,下面的例子,会依序读取并印出列表中的元素。
css
a = ['apple','banana','orange']
print(a[0]) # apple
print(a[1]) # banana
print(a[2]) # orange
索引也可以从右侧开始计数,第一个元素的索引为 -1,第二个元素为 -2,依此类推。
css
a = ['apple','banana','orange']
print(a[-1]) # orange
print(a[-2]) # banana
print(a[-3]) # apple
如果列表中有列表,就构成了「多维列表」,读取元素时如果有第二层,就多一个中括号加上索引值,就能读取第二层的元素。
css
a = ['apple','banana','orange',['dog','cat']]
print(a[3][0]) # dog
print(a[3][1]) # cat
使用切片获取元素
切片可以用来获取列表中的一部分元素。切片的语法是在中括号内使用冒号:
,在冒号的前后放入指定的索引,就能取出指定范围的数据 ( 第一个 offset : 第二个 offset - 1 ),如果不指定数值,冒号前方默认为 0,冒号后方默认为 -1。
范围也可以使用「负数」,表示从右侧开始,但要注意第一个值的顺序 (不论正负) 都必须要在第二个值的前面,不然就读取不到数据 ( 会返回空的结果 )。
scss
a = [0,1,2,3,4,5,6,7,8,9]
b = a[:3]
c = a[3:]
d = a[1:3]
e = a[-5:-2]
print(b) # [0, 1, 2] 取得 0~(3-1) 项
print(c) # [3, 4, 5, 6, 7, 8, 9] 取得 3~最后一项
print(d) # [1, 2] 取得 1~(3-1) 项
print(e) # [5, 6, 7] 取得倒数第 5 项~(倒数第二项-1)
如果使用两个冒号 :: ,表示要间隔几个元素取值 ,例如 ::2
就是间隔两个元素,::3
就是间隔三个元素,如果是负数,就是从右侧取值,因此 ::-1
就可以让反转整个列表。
ini
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = a[::3] # 每隔三个元素取一个
c = a[3::2] # 从第三个元素开始,每隔两个元素取一个
d = a[::-1] # 反转列表
e = a[::-2] # 反转列表,每隔两个元素取一个
print(b) # [0, 3, 6, 9]
print(c) # [3, 5, 7, 9]
print(d) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(e) # [9, 7, 5, 3, 1]
复制列表
可以使用列表的切片[:]
来复制整个列表,或者通过赋值来复制列表。下方的程序码展示两种复制列表的方式,如果使用 b=a 的做法,虽然看起来像是复制了,但实际上 a 和 b 指向了同一个列表 ,所以当 a 删除了一个元素时,b 也会跟着改变,然而如果使用 d=c[:] 的方式,会创建一个 全新 的列表,当 c 发生改变时,不会影响 d。
css
a = [1, 2, 3]
b = a
del(a[1]) # 删除 a 的第二个元素
print(a) # [1, 3]
print(b) # [1, 3]
c = [1, 2, 3]
d = c[:] # 复制 c 的所有元素变成一个新列表
del(c[1]) # 删除 c 的第二个元素
print(c) # [1, 3]
print(d) # [1, 2, 3]
修改列表元素
列表的内容是可以修改的。可以通过索引或切片来修改元素。
使用索引修改元素
通过索引可以直接修改元素。
css
a = ['apple', 'banana', 'orange']
a[0] = 'grap' # 修改第一个元素
使用切片修改元素
切片可以用来快速替换列表中的一段元素。下方的程序会将第 b、c、d 这三个元素更换为 100、200、300。
css
a = ['a','b','c','d','e']
a[1:4] = [100,200,300]
print(a) # ['a', 100, 200, 300, 'e']
指定更换的元素的数量,不一定要和原本的数量一样多 (可以比较少,也可以比较多),更换后会将范围的内容,完全替换成新的内容。
css
a = ['a','b','c','d','e']
a[1:4] = [1,2,3,4,5,6,7,8,9]
print(a) # ['a', 1, 2, 3, 4, 5, 6, 7, 8, 9, 'e']
**替换的内容不一定要是列表,只要是可以「迭代」的内容,**例如字符串、元组,都可以将其替换进入列表中,下方的程序将 1~4 的位置换成 hello 字符串,替换后 hello 字符串会被拆分成一个个的字母。
css
a = ['a','b','c','d','e']
a[1:4] = 'hello'
print(a) # ['a', 'h', 'e', 'l', 'l', 'o', 'e']
添加列表元素
Python 提供两种列表添加元素的方法:append() 和 insert() 。
append()
append() 函数可以将元素添加在一个列表的末尾,如果添加的是一个列表,会原封不动的变成一个新元素 。
css
a = ['a','b','c','d','e']
a.append(100)
b = ['a','b','c','d','e']
b.append([100,200,300])
print(a) # ['a', 'b', 'c', 'd', 'e', 100]
print(b) # ['a', 'b', 'c', 'd', 'e', [100, 200, 300]]
insert()
如果已经知道要添加的位置,使用 insert() 函数,就可以将指定的内容,从指定的位置插入,如果插入的位置设置为 0,会将内容插入在列表的开头,如果设定的位置大于列表长度,就会插入在尾端 (如果设定 -1,会插入在倒数第二个)。
scss
a = ['a','b','c','d','e']
a.insert(3,100)
b = ['a','b','c','d','e']
b.insert(0,100)
c = ['a','b','c','d','e']
c.insert(100,100)
d = ['a','b','c','d','e']
d.insert(-1,100)
print(a) # ['a', 'b', 'c', 100, 'd', 'e']
print(b) # [100, 'a', 'b', 'c', 'd', 'e']
print(c) # ['a', 'b', 'c', 'd', 'e', 100]
print(d) # ['a', 'b', 'c', 'd', 100, 'e']
删除列表元素
Python 提供了四种方法,来删除列表的数据:del、remove()、pop() 和 clear() 。
del
如果已经知道删除元素的位置,就能够「使用 del list(索引值)」 来删除指定的元素,同样支持中括号切片的语法 ,可以删除某个范围的元素,当元素被删除时,后面的元素会往前平移,取代原本的位置。
css
a = [0,1,2,3,4,5,6,7,8,9]
del a[2]
b = [0,1,2,3,4,5,6,7,8,9]
del b[2:6]
print(a) # [0, 1, 3, 4, 5, 6, 7, 8, 9]
print(b) # [0, 1, 6, 7, 8, 9]
remove()
如果不知道删除元素的位置,可以使用「remove(元素内容)」删除该元素,如果有多个同样内容的元素,remove() 只会删除第一个找到的元素。
css
a = ['apple','apple','banana','orange']
a.remove('apple')
print(a) # ['apple', 'banana', 'orange']
pop()
pop() 函数可以取出并移除 列表里的一个元素,使用的方式为「pop(索引值)」,如果不指定数值或数值为 -1,则会取出最后一个元素,取出的元素如果没有赋值给变量,这些元素就会消失。
css
a = [0,1,2,3,4,5]
b = a.pop(2)
print(a) # [0, 1, 3, 4, 5]
print(b) # 2
clear()
clear() 函数会清空整个列表的内容,使其变成一个空的列表。
css
a = [0,1,2,3,4,5]
a.clear()
print(a) # []