文章目录提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 列表(list)
- 列表的定义
- 列表的创建
- 列表元素获取
- 列表添加元素
- 列表删除元素
- 列表修改元素
- 列表的循环遍历
- 列表运算符 *** 作
- 列表的函数
列表(list)
列表由用方括号括起并由逗号分隔的多个表达式构成,创建后可以对其中的元素进行添加、删除、修改等 *** 作,可以使用索引和切片功能对列表中的元素进行查询。
列表是可变的序列:
- 可变说明可以对列表中的元素进行增、删、改的 *** 作
- 序列说明列表中的元素有顺序位置,可以通过元素的索引位置获取该元素
1.使用中括号[]创建列表,示例如下:
>>> list01 = [123, 'abc', ['ddd', 645], None, {}, ()]
>>> print(list01) # 列表中的元素可以是任意 Python对象
[123, 'abc', ['ddd', 645], None, {}, ()]
2.使用list()函数将其他序列转换为列表,示例如下:
>>> str01 = 'python'
>>> list01 = list(str01) # list()函数将字符串转换为列表
>>> print(list01)
['p', 'y', 't', 'h', 'o', 'n']
>>> tuple01 = ('p', 'y', 't', 'h', 'o', 'n')
>>> list01 = list(tuple01) # # list()函数将元组转换为列表
>>> print(list01)
['p', 'y', 't', 'h', 'o', 'n']
3.使用range()函数创建列表:
range()函数的语法如下:
range(start, stop[, step])
参数:
- start: 计数从 start 开始。
默认是从0开始。
例如range(5)等价于range(0, 5)
- stop: 计数到 stop 结束,但不包括 stop。
例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。
例如:range(0, 5) 等价于 range(0, 5, 1)
>>> print(range(0, 5))
range(0, 5)
range()函数返回的是一个可迭代对象(类型是对象),可以使用lis()函数将生成的数列转换为列表,示例代码如下:
>>> list01 = list(range(0, 5))
>>> print(list01)
[0, 1, 2, 3, 4]
可以创建空列表后使用for循环对range()函数生成的可迭代对象进行循环遍历,将元素依次追加到创建好的空列表中,示例代码如下:
>>> list01 = []
>>> for i in range(0, 5):
... lisl01.append(i)
>>> print(list01)
[0, 1, 2, 3, 4]
4.使用解析结构创建列表,示例代码如下:
>>> list01 = [x for x in range(5)]
>>> print(list01)
[0, 1, 2, 3, 4]
列表元素获取
与字符串类似,列表是一个序列,可以使用索引和切片获取其中的元素,索引获取元素示例代码如下:
>>> list01 = ['p', 'y', 't', 'h', 'o', 'n']
>>> print(list01[1]) # 从左到右,获取第1个元素
y
>>> print(list01[-2]) # 从右到左,获取倒数第2个元素
o
切片获取元素示例代码如下:
>>> list01 = ['p', 'y', 't', 'h', 'o', 'n']
>>> print(list01[0:3])
['p', 'y', 't']
使用切片后返回值是一个新列表,可以使用id()函数或者身份运算符进行测试,示例代码如下:
>>> list01 = ['p', 'y', 't', 'h', 'o', 'n']
>>> print(id(list01))
>>> print(id(list01[:])) # 两者引用对象的位置不同
1582124578048
1582124815296
注意:切片会生成一个新的对象,只有一种情况除外:字符串完全切片不会生成新对象,示例代码如下:
>>> str01 = 'python'
>>> print(id(str01))
>>> print(id(str01[:])) # 返回的id相同,切片和str01引用了同一个对象,由内存节约机制所决定
1909940203120
1909940203120
列表添加元素
1.添加单个元素
append() 方法在列表末尾添加一个元素,语法如下:
list.append(obj)
参数:
- obj – 添加到列表末尾的对象
示例如下:
>>> list01 = ['a','b','c']
>>> list01.append('d')
>>> print(list01)
['a', 'b', 'c', 'd']
2.插入元素
insert()方法用于在指定的位置插入元素,语法如下:
list.insert(index, obj)
参数:
- index – 对象obj需要插入的索引位置。
- obj – 要插入列表中的对象。
示例如下:
>>> list01 = ['ali', 'Taobao']
>>> list01.insert(1, 'Baidu')
>>> print(list01)
['ali', 'Baidu', 'Taobao']
3.添加多个元素
extend()方法用于在列表末尾添加多个元素,参数为序列,语法如下:
list.extend(seq)
参数:
- seq – 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。
示例代码如下:
>>> list01 = [1,2,3,4]
>>> list02 = [5,6,7]
>>> list01.extend(list02)
>>> print(list01)
[1, 2, 3, 4, 5, 6, 7]
列表删除元素
1.按值删除
remove()方法用于删除列表中的指定元素,如果有重复值,只能删除第一个,无返回值,语法如下:
list.remove(obj)
参数:
- obj – 列表中要移除的对象。
示例代码如下:
>>> list01 = ['a','b','c','b']
>>> list01.remove('b') # 只能删除第一个'b'元素
>>> print(list01)
['a', 'c', 'b']
使用remove删除列表中不存在的元素时会报错,示例代码如下:
>>> list01 = ['a','b','c','b']
>>> list01.remove('d') # 删除列表中不存在的元素时会报错
Traceback (most recent call last):
File "test.py", line 2, in <module>
list01.remove('d')
ValueError: list.remove(x): x not in list
2.按位置删除
pop()方法用于删除指定位置的对象,省略位置时会删除最后一个对象,同时返回被删除的对象,语法如下:
list.pop([index=-1])
参数:
- index – 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
示例代码如下:
>>> list01 = ['a','b','c','b']
>>> print(list01.pop(1)) # 返回被删除的对象
b
3.del语句删除
用del语句删除列表中指定数据或者切片,无返回值,语法如下:
del list[index]
参数:
- index – 索引。
示例代码如下:
>>> list01 = ['a','b','c','b']
>>> del list01[2] # del语句删除指定位置的对象
>>> print(list01)
['a', 'b', 'b']
>>> list01 = ['a','b','c','b']
>>> del list01[0:2] # del语句删除切片内的对象
>>> print(list01)
['c', 'b']
4.清空列表
clear()方法清空列表中的全部数据,语法如下:
list.clear()
参数:
- 无
示例代码如下:
>>> list01 = ['a','b','c','b']
>>> list01.clear()
>>> print(list01)
[]
列表修改元素
列表是一个可变的序列,列表创建完成后可以对其中的元素进行修改,语法如下:
list[index] = 'obj'
参数:
- index --索引。
- obj – 修改的新对象。
示例代码如下:
>>> list01 = ['a','b','c','b']
>>> list01[3] = 'd'
>>> print(list01)
['a', 'b', 'c', 'd']
列表的循环遍历
1.正向循环
使用for循环从左到右依次遍历列表中的对象,获取到最后一个对象后循环结束,示例代码如下:
>>> list01 = [1,2,3,4,5]
>>> for item in list01:
... print(item)
1
2
3
4
5
还可以使用range()方法生成整数序列当作索引值对列表进行循环遍历,示例代码如下:
>>> list01 = [1,2,3,4,5]
>>> for i in range(5): # range(5)生成0 1 2 3 4的数列
... print(list01[i]) # i=0时获取到list01[0]的对象,依次类推
1
2
3
4
5
2.反向循环遍历
使用for循环从右到左依次遍历列表中的对象,获取到左边一个对象后循环结束。
使用range()函数构造[-1, -len(list01)]的数列,或者构造[len(list01), 0]的数列,示例代码如下:
# 使用range()函数构造4 3 2 1 0的数列
>>> list01 = [1,2,3,4,5]
>>> for i in range(len(list01)-1, -1, -1):
... print(list01[i])
5
4
3
2
1
# 使用range()函数构造-1 -2 -3 -4 -5的数列
>>> list01 = [1,2,3,4,5]
>>> for i in range(-1, -len(list01)-1, -1):
... print(list01[i])
5
4
3
2
1
以上两种方式都可以对列表进行从右到左的循环遍历。
列表的运算符和字符串运算符相似:
使用’+‘号用于列表拼接,使用’*'号用于列表重复,示例代码如下:
>>> s1 = [1,2,3,4]
>>> s2 = [5,6,7,8]
>>> s3 = s1 + s2 # 列表拼接
>>> print(s3)
[1, 2, 3, 4, 5, 6, 7, 8]
>>> s4 = s1 * 2
>>> print(s4)
[1, 2, 3, 4, 1, 2, 3, 4]
使用in和not in 判断元素是否在列表中,示例代码如下:
>>> s1 = ['a','b','c','d']
>>> print('a' in s1)
True
>>> print('d' not in s1)
True
列表的函数
列表中提供了复制列表、列表排序、反转列表对象等方法,下面介绍一些常用的列表方法:
1.复制列表
copy()方法可以复制列表对象,语法如下:
list.copy()
copy()方法无参数,返回复制后的新列表,只能实现浅层复制,示例代码如下所示:
>>> s1 = [1,2,3,4,5]
>>> s2 = s1.copy()
>>> print(s2)
[1, 2, 3, 4, 5]
# 使用id()函数测试s1,s2的内存地址,分别为不同的内存地址
>>> print(id(s1))
2111392855168
>>> print(id(s2))
2111393092352
2.列表排序
sort()方法可以对原列表进行排序,语法如下:
list.sort(key=None, reverse=False)
参数:
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则,reverse = True 降序, reverse = False升序(默认)。
返回值:该方法没有返回值,对列表的对象进行排序。
示例代码如下所示:
>>> s1 = [18,2,35,4,5,0,7]
>>> s1.sort() # 默认升序
>>> print(s1)
[0, 2, 4, 5, 7, 18, 35]
>>> s1.sort(reverse=True) # 设置reverse=True降序
>>> print(s1)
[35, 18, 7, 5, 4, 2, 0]
# 自定义函数获取列表的第二个元素
def Second(ele):
return ele[1]
s1 = [(2, 5), (6, 2), (18, 1), (9, 3)]
s1.sort(key=Second)
print (s1)
[(18, 1), (6, 2), (9, 3), (2, 5)]
3.反转列表
reverse()方法用于反转列表中的元素,语法如下:
list.reverse()
无参数,无返回值,对原列表进行反转。
示例代码如下所示:
>>> s1 = [18,2,35,4,5,0,7]
>>> s1.reverse()
>>> print(s1)
[7, 0, 5, 4, 35, 2, 18]
4.统计元素出现的次数
count()方法用于统计某个元素在列表中出现的次数,语法如下:
list.count(obj)
参数:
- obj – 列表中统计的对象
返回值:返回元素在列表中出现的次数。
示例代码如下:
>>> s1 = ['a','c','d','c','b','w','c']
>>> print(s1.count('c'))
3
5.查找元素索引位置
index()方法可以找出某个元素第一次匹配项的索引位置,语法如下:
list.index(x[, start[, end]])
参数:
- x-- 查找的对象。
- start-- 可选,查找的起始位置。
- end-- 可选,查找的结束位置。
返回值:该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
示例代码如下:
>>> s1 = ['a','c','d','c','b','w','c']
>>> print(s1.index('c'))
1
>>> print(s1.index('f')) # 查找的对象不在列表中报错
Traceback (most recent call last):
File "test.py", line 2, in <module>
print(s1.index('f'))
ValueError: 'f' is not in list
6.清空列表
clear()方法可以一次将列表中的对象清空,语法如下:
list.clear()
无参数,无返回值,直接清空原列表,示例代码如下:
>>> s1 = ['a','c','d','c','b','w','c']
>>> print(s1.clear()) # 无返回值时返回None
None
>>> print(s1)
[]
除此以外,还有一些内建函数,例如:max()、min()可以返回列表中的最大值和最小值,但是使用语法和以上函数完全不同,max()、min()、len()、type()都属于Python内建函数,可以作用于Python中的各种数据结构,而上面介绍的六个函数属于列表类中的方法,仅在列表类对象和实例对象中可以被调用,关于类和对象的内容会在面向对象中具体讲解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)