格雅百科

Python—列表(类固醇数组)

格雅百科
-->

我们在C语言中使用数组将很多相同数据类型的数据放在一起,但是数组有一个基本的要求,那就是数据类型必须一致。我们知道Python变量没有数据。类型,也就是说Python没有数组的概念,但是Python引入了更强大的列表。

基本概念

列表是Python中内置的变量序列,是元素的有序集合;

列表中的每个数据称为一个元素。列表的所有元素都放在一对方括号“[”和“]”中,并用逗号分隔;

列表元素可以通过索引访问各个元素。

在Python中,同一个列表中的元素的数据类型可以不同。它们可以包含基本类型的元素,例如整数、实数和字符串,以及列表、元组、字典、集合、函数等。任何物体。

Python采用基于值的自动内存管理模式。变量并不直接存储值,而是存储值的引用或内存地址。这也是Python中变量可以随时改变类型的重要原因。同样,Python列表中的元素也是对值的引用,因此列表中的每个元素可以是不同类型的数据。

如果只有一对方括号,没有任何元素,则代表一个空列表。

列表大小没有限制,可以随时修改。当从列表中添加或删除元素时,列表对象会自动扩展或收缩其内存,以确保相邻元素之间没有间隙。 Python列表的这种自动内存管理功能可以大大减轻程序员的负担,但是插入和删除非尾元素涉及到移动列表中的大量元素,这会严重影响效率。

访问列表中的元素时使用索引形式。在非尾部位置插入和删除元素会改变列表中该位置后面元素的索引,这可能会导致某些操作出现意外的错误结果。除非绝对必要,否则您应该尝试在列表末尾添加和删除元素。

创建和删除

1。与其他类型的Python对象变量一样,使用“=”直接将列表赋值给变量来创建列表对象。例如:

a_list = ['a', 'b', 'mpilgrim', 'z', '示例']
a_list = []

2。您还可以使用 list() 函数将元组、范围对象、字符串或其他类型的可迭代对象类型数据转换为列表。例如:

list((3,5,7,9,11)) #将元组转换为列表
list(range(1, 10, 2)) #将range对象转换为list
list('hello world') #将字符串转换为列表
list({3,7,5}) #将集合转换为列表
list({'a':3, 'b':9, 'c':78}) #将字典的“键”转换成列表
list({'a':3, 'b':9, 'c':78}.items())#转换字典的“key:value”

3。当不再使用时,使用 del 命令删除整个列表。如果列表对象所指向的值不再被其他对象所指向,Python会同时删除该值。例如:

x = [1, 2, 3]
del x #删除列表对象
x #对象删除后无法再访问,抛出异常
NameError:名称“x”未定义

列表理解

1。列表推导可以说是Python程序开发中最常用的技术之一。

使用方括号 [ ] 作为开始和结束标记。

[集合 ifcondition 中的值的表达式]

列表理解使用非常简洁的方式快速生成满足特定需求的列表,并且代码的可读性很强。

aList = [x*x for x in range(10)]

相当于

aList = []
对于范围 (10) 内的 x:
aList.append(x*x)

2。不符合条件的滤芯

aList = [-1,-4,6,7.5,-2.3,9,-11]
[i for i in aList if i>0]

[6, 7.5, 9]

在列表推导式中使用多个循环来实现多序列元素的任意组合,并且可以组合条件语句来过滤特定元素

[(x, y) 对于范围 (3) 内的 x 对于范围 (3) 内的 y]

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1 ), (2, 2)]

[(x, y) 对于 [1, 2, 3] 中的 x 对于 [3, 1, 4] 中的 y,如果 x != y]

[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

列表操作

1.列表上有一些基本的操作,和字符串操作类似

2。列出常用方法

1)append()、insert()、extend()append()用于将元素追加到列表末尾,insert()用于将元素插入到列表中的任意指定位置, extend() 用于将另一个元素添加到列表末尾。列表中的所有元素都将追加到当前列表的末尾。这三个方法都是就地操作,不影响列表对象在内存中的起始地址。

>>> x = [1, 2, 3]
>>> id(x) #查看对象的内存地址
50159368
>>> x.append(4) #在最后追加元素
>>> x.insert(0, 0) #在指定位置插入元素
>>> x.extend([5, 6, 7]) #在末尾追加多个元素
>>> x
[0, 1, 2, 3, 4, 5, 6, 7]
>>> id(x) #链表在内存中的地址不变
50159368

2) pop(),remove(),clear() pop()用于删除并返回指定位置的元素(默认最后); remove()用于删除列表中第一个等于指定value元素的元素; clear() 用于清除列表中的所有元素。全部都是就地操作。还可以使用 del 命令删除列表中指定位置的元素,这也是就地操作。

>>> x = [1, 2, 3, 4, 5, 6, 7]
>>> x.pop() #弹出并返回尾部元素
>>> x.pop(0) #弹出并返回指定位置的元素
>>> x.clear() #删除所有元素
>>> x
[]
>>> x = [1, 2, 1, 1, 2]
>>> x.remove(2) #删除第一个值为2的元素
>>> del x[3] #删除指定位置的元素

3) count(),index() count()用于返回指定元素在列表中出现的次数; index() 用于返回指定元素在列表中首次出现的位置,如果该元素不在列表中则抛出异常。

>>> x = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> x.count(3) #元素3在列表x中出现的次数
3
>>> x.count(5) #不存在,返回0
0
>>> x.index(2) #元素2在列表x中第一次出现的索引
1
>>> x.index(5) #列表x中没有5,抛出异常
ValueError: 5 不在列表中

4) 排序(), 反向()

sort()方法用于对所有元素按照指定的规则进行排序; reverse() 方法用于反转或翻转列表中的所有元素。

>>> x = list(range(11)) #包含11个整数的列表
>>> 随机导入
>>> random.shuffle(x) #随机打乱列表x中的元素
>>> x
[6,0,1,7,4,3,2,8,5,10,9]
>>> x.sort(key=lambda item:len(str(item)), reverse=True) #按照转换为字符串后的长度降序排列
>>> x
[10,6,0,1,7,4,3,2,8,5,9]
>>> >>> x.reverse() #翻转列表

  顺序操作常用的内置函数

        字符串拆分列表

对于字符串,可以使用 split() 函数将字符串拆分为列表。默认是用空格分割。例如:

-->

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~