Python数据类型 ——— 列表
Posted 2021dragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据类型 ——— 列表相关的知识,希望对你有一定的参考价值。
文章目录
列表
列表(list)是一种有序和可更改的集合,列表中允许存在重复的成员。
创建列表
创建空列表
在Python中,[]
表示一个空列表。比如:
a = []
print(type(a)) # <class 'list'>
print(a) # []
此外,也可以通过list()
的方式来创建一个空列表。比如:
a = list()
print(type(a)) # <class 'list'>
print(a) # []
创建非空列表
创建列表时可以在[]
中设置列表的初始值。比如:
a = [1, 2, 3, 4, 5]
print(type(a)) # <class 'list'>
print(a) # [1, 2, 3, 4, 5]
需要注意的是,列表中存放的元素可以是不同类型的。比如:
a = [1, 'hello', True, [4, 5, 6]]
print(type(a)) # <class 'list'>
print(a) # [1, 'hello', True, [4, 5, 6]]
新增列表元素
append方法
使用append方法可以在列表末尾新增一个元素。比如:
a = [1, 2, 3, 4]
a.append(2021)
a.append('dragon')
print(a) # [1, 2, 3, 4, 2021, 'dragon']
insert方法
使用insert方法可以在指定下标位置新增元素。比如:
a = [1, 2, 3, 4]
a.insert(1, 5)
a.insert(100, 'dragon')
print(a) # [1, 5, 2, 3, 4, 'dragon']
说明一下:
- Python是一种面向对象的语言,因此创建出来的列表本质是一个对象,而这里的append和insert都是列表的成员方法。
- 调用insert方法时,如果指定的索引超过了列表中的最大下标,则将待插入元素插入在列表的末尾。
删除列表元素
pop方法
使用pop方法可以删除列表最末尾的元素。比如:
a = [1, 2, 3, 4]
a.pop()
print(a) # [1, 2, 3]
使用pop方法也可以删除指定下标位置的元素。比如:
a = [1, 2, 3, 4]
a.pop(1)
print(a) # [1, 3, 4]
remove方法
使用remove方法可以指定删除列表中特定值的元素。比如:
a = [1, 2, 3, 4]
a.remove(1)
print(a) # [2, 3, 4]
如果列表中存在多个特定值的元素,则remove方法只删除首次出现的元素。比如:
a = [1, 2, 3, 4, 1]
a.remove(1)
print(a) # [2, 3, 4, 1]
查找列表元素
in和in not操作符
使用in和in not操作符能够判定某个元素是否在列表中存在。比如:
a = [1, 2, 3, 4]
print(1 in a) # True
print(10 in a) # False
print(1 not in a) # False
print(10 not in a) # True
index方法
使用index方法也可以判定某个元素是否在列表中存在。比如:
a = [1, 2, 3, 4]
print(a.index(3)) # 2
# print(a.index(10)) # 不存在,抛异常
注意: 使用index方法时,如果待查找元素在列表中,则返回该元素的下标,否则会抛出异常。
下标访问列表元素
访问列表元素
通过下标访问操作符[]
可以获取指定下标位置的元素。比如:
a = [1, 2, 3, 4]
print(a[2]) # 3
此外,还可以通过下标修改访问到的元素的值。比如:
a = [1, 2, 3, 4]
a[2] = 100
print(a) # [1, 2, 100, 4]
注意: 如果指定下标的值超过了列表中的最大下标,则会抛出异常。
负索引
我们平常所说的下标都是从0开始计数的,而此处的下标是可以取负数的,我们称之为负索引,负索引其实就是从列表的最后一个元素开始往前,依次为-1、-2、-3、…。比如:
因此如果想要访问列表的最后一个元素,直接访问下标为-1的元素即可。比如:
a = [1, 2, 3, 4]
print(a[-1]) # 4
遍历列表元素
for循环遍历
Python中的for循环可以直接遍历一个可迭代对象。比如:
a = [1, 2, 3, 4]
for elem in a:
print(elem)
但需要注意的是,该方法下对循环变量的修改不会影响列表中的元素值。比如:
a = [1, 2, 3, 4]
for elem in a:
print(elem)
elem = elem + 10 # 不会影响列表中的元素值
print(a) # [1, 2, 3, 4]
此外,也可以用for循环遍历列表元素下标,然后以下标的方式依次遍历列表中的元素。比如:
a = [1, 2, 3, 4]
for i in range(len(a)):
print(a[i])
以这种方式遍历列表元素,就能够对列表元素进行修改。比如:
a = [1, 2, 3, 4]
for i in range(len(a)):
print(a[i])
a[i] = a[i] + 10 # 会影响列表中的元素值
print(a) # [11, 12, 13, 14]
说明一下: 通过len函数能够获取到列表中的元素个数。
while循环遍历
也可以用while循环对遍历列表元素下标,然后以下标的方式依次遍历列表中的元素。比如:
a = [1, 2, 3, 4]
i = 0
while i < len(a):
print(a[i])
i += 1
子列表提取
[起始下标 : 结束下标]
以[起始下标 : 结束下标]
的方式可以从列表中提取出,从起始下标开始到结束下标的一组元素。比如:
a = [1, 2, 3, 4]
print(a[1:3]) # [2, 3]
注意: 提取出的子列表中包含起始下标的元素,但不包含结束下标的元素(前闭后开)。
切片时省略边界
提取子列表的过程也叫做切片的过程,以[起始下标 : 结束下标]
的方式切片时可以省略起始下标或结束下标。
- 如果以
[起始下标 : ]
的方式进行切片,则子列表中的元素包括起始下标的元素及其后续元素。 - 如果以
[ : 结束下标]
的方式进行切片,则子列表中的元素包括结束下标之前的所有元素。 - 如果以
[ : ]
的方式进行切片,则子列表中的元素包括原列表中的所有元素。
切片示例:
a = [1, 2, 3, 4]
print(a[1:]) # [2, 3, 4]
print(a[:2]) # [1, 2]
print(a[:-1]) # [1, 2, 3]
print(a[:]) # [1, 2, 3, 4]
注意: 切片时也可以使用负索引。
切片时指定步长
以[起始下标 : 结束下标 : 步长]
的方式切片可以指定步长,即每访问一个元素后下标自增几步。比如:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[::1]) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[::2]) # [1, 3, 5, 7, 9]
print(a[::3]) # [1, 4, 7, 0]
print(a[1:-1:2]) # [2, 4, 6, 8]
此外,切片时指定的步长也可以为负数,这时表示从后往前提取元素。比如:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[::-1]) # [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(a[::-2]) # [0, 8, 6, 4, 2]
切片时下标越界问题
如果切片时填写的下标超出了有效范围,运行程序后不会抛异常,而是尽可能把符合要求的元素提取出来。比如:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[1:100]) # [2, 3, 4, 5, 6, 7, 8, 9, 0]
拼接列表
使用+拼接列表
使用+可以把两个列表拼接在一起。比如:
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(a) # [1, 2, 3]
print(b) # [4, 5, 6]
print(c) # [1, 2, 3, 4, 5, 6]
注意: 使用+拼接后会生成一个新的列表,该操作不会影响两个原有列表。
extend方法
使用extend方法,可以把一个列表拼接到另一个列表的后面。比如:
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a) # [1, 2, 3, 4, 5, 6]
print(b) # [4, 5, 6]
注意: a.extend(b)
是把b列表中的元素拼接到a列表后面,该操作不会修改b列表。
使用+=拼接列表
使用+=也可以把一个列表拼接到另一个列表的后面。比如:
a = [1, 2, 3]
b = [4, 5, 6]
a += b
print(a) # [1, 2, 3, 4, 5, 6]
print(b) # [4, 5, 6]
说明一下:
- +=和extend方法都可以将一个列表拼接到另一个列表后面,但使用extend方法会更高效。
- 因为
a += b
等价于a = a + b
,拼接过程中会先构造出拼接后的列表,然后将a原来的列表释放,再将这个拼接后的列表赋值给a。 - 而
a.extend(b)
是直接把b列表中的元素拼接到a列表后面,避免了不必要的释放操作。
列表常用接口汇总
列表操作:
列表操作 | 方式 |
---|---|
子列表提取 | thislist[start:end:step] (前闭后开) |
列表检查 | in 和 in not |
列表拼接 | + 和 += |
列表长度 | len() 函数 |
列表的成员函数:
成员函数 | 功能 |
---|---|
copy | 复制列表 |
clear | 清空列表 |
append | 在列表末尾添加一个元素 |
insert | 在列表指定下标位置添加元素 |
extend | 将列表元素(或任何可迭代的元素)添加到当前列表的末尾 |
pop | 删除指定下标位置的元素(默认为最后一个) |
remove | 删除指定值的元素(首次出现) |
index | 返回具有指定值的元素的下标(首次出现) |
count | 返回具有指定值的元素个数 |
reverse | 颠倒列表中元素的顺序 |
sort | 对列表中元素进行排序 |
以上是关于Python数据类型 ——— 列表的主要内容,如果未能解决你的问题,请参考以下文章