这是我参与更文挑战的第 6 天,活动详情查看: 更文挑战
「本文已参与 周末学习计划,点击查看详情 」
回顾复习
-
Python列表是可变数据类型之一(列表、字典及集合)
-
列表的数据项不需要具有相同的数据类型。比如[10,”aaa”,True,[20,30],(5,7),{1,2,3}]
-
列表可以进行操作包括添加、删除等操作
例如创建一个列表对象,数据项里包含有整型、字符串、元组、字典类型。
List = [10,"aaa",True,[20,30],(5,7),{1,2,3}]
DOCS
1.列表创建
列表的创建方式有4种。
-
方括号
-
list()可以将任何迭代的数据转化成列表
-
range()/map()创建整数列表
-
推导式来创建列表
接下来,我们来分别介绍一下4种方法创建列表。
1.1 使用[]创建
我们可以使用列表的基本语法,[] 来创建。把逗号分隔的不同的数据项使用方括号括起来
# 定义一个列表变量
a = [10,20,39]
# 打印列表a
print(a)
复制代码
1.2 使用list()创建
list()函数是python内置函数。
它可以将任何可迭代数据转换为列表类型,并返回转换后的列表。
当参数为空时,list函数可以创建一个空列表
- 创建空列表
>>> a = list()
>>> a
[]
复制代码
- 将字符串转换为列表
>>> a = list("JUEJING")
>>> a
['J', 'U', 'E', 'J', 'I', 'N', 'G']
>>>
复制代码
- 将元组转换为列表
>>> Tule = (10,20,30)
>>> a = list(Tule)
>>> a
[10, 20, 30]
>>>
复制代码
- 将字典转换为列表
>>> Dict = {"Name":"JUEJING"}
>>> a = list(Dict)
>>> a
['Name']
复制代码
注意:将字典转换为列表时,会将字典的值舍去,而仅仅将字典的键转换为列表。
如果想将字典的值全部转换为列表,可以考虑使用字典方法dict.values()。
- 将集合转换为列表
>>> Set = {1,2,"JUEJING"}
>>> a = list(Set)
>>> a
[1, 2, 'JUEJING']
复制代码
1.3 使用range()/map()生成列表
range()语法格式为:
range([start],end,[step])
复制代码
start参数:可选,表示起始数字,默认是0
end参数:必选,表示结尾数字。
step参数:可选,表示步长,默认为1
python3中range()返回的是一个range()对象,而不是列表。我们需要通过list()方法将其转化成列表对象。
>>> list(range(3,10,2))
[3, 5, 7, 9]
>>> list(range(15,3,-1))
[15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4]
>>> list(range(3,-10,-1))
[3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>>
复制代码
map() 语法格式:
map(function,iterable)
复制代码
function参数:函数
iterable参数:– 一个或多个序列
map()会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
>>> list(map(int,[1,2,3,4]))
[1, 2, 3, 4]
>>>
复制代码
注意:
- 参数必须是可迭代序列对象。list函数的参数必须是可迭代对象。当选用不可迭代的对象作为参数时,Python报错
>>> list(10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>
复制代码
- 无意义的转换——将列表转换为列表。
1.4 使用推导式来生成列表
我们可以使用控制语句for循环,if语句来生成列表。
>>> a = [x*2 for x in range(5)] #循环创建多个元素
>>> a
[0, 2, 4, 6, 8]
>>>
>>> a = [x*2 for x in range(100) if x%9==0] # 通过if语句来进行过滤
>>> a
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]
>>>
复制代码
2. 列表添加元素
列表添加元素有5种方式
当列表元素增加事,列表会自动进行内存管理,大大减少程序猿的负担,但这个特点涉及列表元素大量移动,效率低。除非必要情况下,我们一般只在列表的尾部添加元素,这样会大大提高列表的操作效率。
2.1 使用append()函数
原地修改列表对象,是真正的列表尾巴添加新元素,速度最快,强烈推荐。
>>> a = [1,2]
>>> a.append(10)
>>> a
[1, 2, 10]
>>>
复制代码
2.2 使用insert()函数
使用insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度,涉及大量元素时,尽量避免使用。
>>> a = [1,2]
>>> a.insert(1,7)
>>> a
[1, 7, 2]
>>>
复制代码
2.3 使用extend()函数
将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。
>>> a = [1,2]
>>> a.extend([6])
>>>
复制代码
2.4 使用➕连接
使用加号进行连接,并不是真正的尾部添加元素,而是创建新的列表对象,将原列表的元素和新列表元素依次复制到新的列表对象中,这样会涉及大量的复制操作,对于操作大量元素不建议使用
>>> a = [1,2]
>>> a+[5]
[1, 2, 5]
>>> id(a)
4479245520
>>> id(a+[5])
4479245680
复制代码
2.5 使用乘号扩展
使用乘法扩展列表,生成一个新列表,新列表元素时原列表元素的多次重复
>>> a = [1,2]
>>> b = a*3
>>> id(a[0])
4476513184
>>> id(b[0])
4476513184
>>> id(b[2])
4476513184
>>>
复制代码
3. 删除列表元素
3.1 使用pop()函数
pop()删除并返回指定位置元素,如果没有指定,则默认删除列表尾部的元素
a.pop([index=-1])
复制代码
参数:
obj — 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
>>> a = [1,2,6]
>>> a.pop()
6
>>>
复制代码
3.2 使用remove()函数
remove() 函数用于移除列表中某个值的第一个匹配项。
a.remove(obj)
复制代码
参数:
obj — 列表中要移除的对象。
>>> a = [1,2,6]
>>> a.remove(2)
>>> a
[1, 6]
>>>
复制代码
3.3 使用del()函数
删除列表指定元素。
>>> a = [1,2,6]
>>> del a[1]
>>> a
[1]
>>>
复制代码
注解: 删除索引2的位置之后,索引3位置会前移到索引2位置
4.列表切片
切片是python序列及其重要操作,适用于列表、元组、字符串等等。
切片slice操作可以让我们快速提取子列表或修改。标准格式为:
[start:end:step]
复制代码
注:当步长省略时顺便可以省略第二个冒号。
>>> a = [1,2,6]
>>> a[1:]
[2, 6]
>>> a[::-1]
[6, 2, 1]
>>> a = [1,2,6]
>>> a[:]
[1, 2, 6]
>>> a[1:]
[2, 6]
>>> a[:2]
[1, 2]
>>> a[1:2]
[2]
>>> a[0:2:1]
[1, 2]
>>>
复制代码
其他操作(三个数为负数)的情况:
>>> a[::-1]
[6, 2, 1]
>>> a[-1::]
[6]
>>> a[-3:-2]
[1]
复制代码
好啦,以上是本期内容,下期介绍列表的姊妹元组。
欢迎大佬在评论区,指正,我是学习python的盆友圈的小可爱,下次再见!