Python 教程 – 列表

创建列表

列表是 Python 中用于存储一系列元素的数据结构,列表中的元素可以是字符串、数字、布尔值、其他列表、字典等。在 Python 中,有三种方法可以创建列表:使用方括号、list() 函数和 split() 函数切分字符串。

方括号

将元素放在方括号内,用逗号分隔,即可创建一个列表。通常我们会将列表赋值给一个变量。例如,a 是一个字符串列表,b 是一个数字列表,c 是一个包含字符串、数字和列表的列表。

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 字符串转成成五个字符串的列表。

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() 函数可以根据指定的分隔符将字符串分割成列表。下图的例子,会根据 . 符号,将字符串切分成列表,由于有多个 . 在一起,拆分时会出现空的字符串元素。

a = 'apple...banana...orange'
b = a.split('.')  # 根据'.'分隔符分割字符串
print(b)   # ['apple', '', '', 'banana', '', '', 'orange']

合并列表

合并列表有两种方法:使用 + 运算符和 extend() 方法。

使用 + 号

使用 + 运算符可以将两个列表合并,类似于字符串的拼接。在 + 号右方的列表中的元素会追加在左方列表的后面。

a = ['a1','a2','a3']
b = ['b1','b2','b3']
c = a + b
print(c)   # ['a1', 'a2', 'a3', 'b1', 'b2', 'b3']

extend() 函数

extend()函数可以将一个列表的内容添加到另一个列表的末尾。

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

a = ['a1','a2','a3']
b = ['b1','b2','b3']
c = a.extend(b)
print(c)   # none

获取列表元素

要使用列表,我们需要读取列表中的内容,Python 提供了两种方法来读取列表元素:通过索引和切片。

使用索引获取元素

列表中的每个元素都有一个索引号,通过索引可以直接访问元素。列表中第一个元素的索引为0,第二个 offset 为 1,依此类推,下面的例子,会依序读取并印出列表中的元素。

a = ['apple','banana','orange']
print(a[0])   # apple
print(a[1])   # banana
print(a[2])   # orange

索引也可以从右侧开始计数,第一个元素的索引为 -1,第二个元素为 -2,依此类推。

a = ['apple','banana','orange']
print(a[-1])   # orange
print(a[-2])   # banana
print(a[-3])   # apple

如果列表中有列表,就构成了「多维列表」,读取元素时如果有第二层,就多一个中括号加上索引值,就能读取第二层的元素。

a = ['apple','banana','orange',['dog','cat']]
print(a[3][0])   # dog
print(a[3][1])   # cat

使用切片获取元素

切片可以用来获取列表中的一部分元素。切片的语法是在中括号内使用冒号:,在冒号的前后放入指定的索引,就能取出指定范围的数据 ( 第一个 offset : 第二个 offset – 1 ),如果不指定数值,冒号前方默认为 0,冒号后方默认为 -1。

范围也可以使用「负数」,表示从右侧开始,但要注意第一个值的顺序 (不论正负) 都必须要在第二个值的前面,不然就读取不到数据 ( 会返回空的结果 )。

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 就可以让反转整个列表

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。

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]

修改列表元素

列表的内容是可以修改的。可以通过索引或切片来修改元素。

使用索引修改元素

通过索引可以直接修改元素。

a = ['apple''banana''orange']
a[0] = 'grap'  # 修改第一个元素

使用切片修改元素

切片可以用来快速替换列表中的一段元素。下方的程序会将第  b、c、d  这三个元素更换为 100、200、300。

a = ['a','b','c','d','e']
a[1:4] = [100,200,300]
print(a)    # ['a', 100, 200, 300, 'e']

指定更换的元素的数量,不一定要和原本的数量一样多 (可以比较少,也可以比较多),更换后会将范围的内容,完全替换成新的内容。

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 字符串会被拆分成一个个的字母。

a = ['a','b','c','d','e']
a[1:4] = 'hello'
print(a)    # ['a', 'h', 'e', 'l', 'l', 'o', 'e']

添加列表元素

Python 提供两种列表添加元素的方法:append() 和 insert()

append()

append() 函数可以将元素添加在一个列表的末尾,如果添加的是一个列表,会原封不动的变成一个新元素 。

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,会插入在倒数第二个)。

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(索引值)」 来删除指定的元素,同样支持中括号切片的语法 ,可以删除某个范围的元素,当元素被删除时,后面的元素会往前平移,取代原本的位置。

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() 只会删除第一个找到的元素

a = ['apple','apple','banana','orange']
a.remove('apple')
print(a)   # ['apple', 'banana', 'orange']

pop()

pop() 函数可以取出并移除列表里的一个元素,使用的方式为「pop(索引值)」,如果不指定数值或数值为 -1,则会取出最后一个元素,取出的元素如果没有赋值给变量,这些元素就会消失。

a = [0,1,2,3,4,5]
b = a.pop(2)
print(a)   # [0, 1, 3, 4, 5]
print(b)   # 2

clear()

clear() 函数会清空整个列表的内容,使其变成一个空的列表。

a = [0,1,2,3,4,5]
a.clear()
print(a)   # []


原文始发于微信公众号(程序猿技术充电站):Python 教程 – 列表

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/241204.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!