数据类型详解-列表

数据类型详解-列表数据类型详解 列表文章目录数据类型详解 列表列表的定义列表的基本操作列表中切片列表相关函数深拷贝与浅拷贝浅拷贝深拷贝列表推导式一 基本的列表推到式使用方式二 带有判断条件的列表推导式式列表的定义可以使用中括号进行定义

大家好,欢迎来到IT知识分享网。

数据类型详解-列表

列表的定义

  • 可以使用 中括号进行定义 []
  • 也可以使用 list函数 定义
  • 在定义列表中的元素时,需要在每个元素之间使用逗号,进行分隔。[a,b,c,d]
  • 列表中的元素可以是任意类型的,通常用于存放同类项目的集合

列表的基本操作

  • 列表定义-[],list()
  • 列表相加-拼接
  • 列表相乘-重复
  • 列表的下标- 获取,更新
  • 列表元素的添加-append()
  • 列表元素的删除
    • del 列表[下标]
    • pop()函数 删除元素

列表中切片

语法==> 列表[开始索引:结束索引:步进值]

1。 列表[开始索引:] ==> 从开始索引到列表的最后

2。 列表[:结束值] ==> 从开始到指定的结束索引之前

3。 列表[开始索引:结束索引] ==> 从开始索引到指定结束索引之前

4。 列表[开始索引:结束索引:步进值] ==> 从指定索引开始到指定索引前结束,按照指定步进进行取值切片

5。 列表[:] 或 列表[::] ==> 所有列表元素的切片

6。 列表[::-1] ==> 倒着获取列表的元素

varlist = ['爷爷','红娃','橙娃','黄娃','绿娃','青娃','蓝娃','紫娃'] # 从开始索引到列表的最后 res = varlist[2:] #['橙娃', '黄娃', '绿娃', '青娃', '蓝娃', '紫娃'] # 从开始到指定的结束索引之前 res = varlist[:2] #['爷爷', '红娃'] # # 从开始索引到指定结束索引之前 res = varlist[2:6] # ['橙娃', '黄娃', '绿娃', '青娃'] # # 从指定索引开始到指定索引前结束,按照指定步进进行取值切片 res = varlist[2:6:2] # ['橙娃', '绿娃'] # # 所有列表元素的切片 res = varlist[:] res = varlist[::] # # 倒着输出列表的元素 res = varlist[::-1] #['紫娃', '蓝娃', '青娃', '绿娃', '黄娃', '橙娃', '红娃', '爷爷'] # 使用切片方法 对列表数据进行更新和删除 # 从指定下标开始,到指定下标前结束,并替换为对应的数据(容器类型数据,会拆分成每个元素进行赋值) varlist[2:6] = ['a','b','c',1,2,3] #['爷爷', '红娃', 'a', 'b', 'c', 1, 2, 3, '蓝娃', '紫娃'] varlist[2:6:2] = ['a','b'] # 需要与要更新的元素个数对应 #['爷爷', '红娃', 'a', '黄娃', 'b', '青娃', '蓝娃', '紫娃'] #切片删除 del varlist[2:6] del varlist[2:6:2] 

列表相关函数

varlist = ['爷爷','红娃','橙娃','黄娃','绿娃','青娃','蓝娃','紫娃','橙娃','橙娃'] # len() 检测当前列表的长度,列表中元素的个数 res = len(varlist) # count() 检测当前列表中指定元素出现的次数 res = varlist.count('橙娃') # append() 向列表的尾部追加新的元素,返回值为 None varlist.append('穿山甲') # insert() 可以向列表中指定的索引位置添加新的元素, varlist.insert(18,'葫芦小金刚') # pop() 可以对指定索引位置上的元素做 出栈 操作,返回出栈的元素 res = varlist.pop() # 默认会把列表中的最后一个元素 出栈 res = varlist.pop(2) # 会在列表中把指定索引的元素进行 出栈 # remove() 可以指定列表中的元素 进行 删除,只删除第一个。如果没有找到,则报错 res = varlist.remove('橙娃') # index() 可以查找指定元素在列表中第一次出现的索引位置 # res = varlist.index('橙娃') # res = varlist.index(1,5,'橙娃') # 可以在指定索引范围内查找元素的索引位置 # extend() 接收一个容器类型的数据,把容器中的元素追加到原列表中 # varlist.extend('123') # s.clear() # 清空列表内容 # varlist.clear() # reverse() 列表翻转 varlist.reverse() # sort() 对列表进行排序 varlist=[1,2,3,-6,-9,8,5,7,4,5] res = varlist.sort() # 默认对元素进行从小到大的排序 res = varlist.sort(reverse=True) # 对元素进行从大到小的排序 res = varlist.sort(key=abs) # 可以传递一个函数,按照函数的处理结果进行排序 

深拷贝与浅拷贝

浅拷贝

浅拷贝只能拷贝列表中的一维元素,如果列表中存在二维元素或容器,则引用而不是拷贝

使用cpoy函数或者copy模块中的copy函数拷贝的都是浅拷贝

# 浅拷贝 只能拷贝当前列表,不能拷贝列表中的多维列表元素 varlist = ['a','b','c'] # 简单的拷贝 就可以把列表复制一份 newlist = varlist.copy() # 对新拷贝的列表进行操作,也是独立的 # del newlist[1] print(varlist,id(varlist)) print(newlist,id(newlist)) ''' ['a', 'b', 'c'] 88 ['a', 'b', 'c'] 76 ''' # 多维列表 varlist = [1,2,3,[4,5,6]] # 使用copy函数 拷贝一个多维列表 newlist = varlist.copy() print(varlist,id(varlist)) print(newlist,id(newlist)) ''' [1, 2, 3, [4, 5, 6]] 40 [1, 2, 3, [4, 5, 6]] 48 ''' # 如果是一个被拷贝的列表,对它的多维列表元素进行操作时,会导致原列表中的多维列表也发生了变化 del newlist[3][1] print(newlist[3],id(newlist[3])) print(varlist[3],id(varlist[3])) ''' 通过id检测,发现列表中的多维列表是同一个元素(对象) [4, 6] 36 [4, 6] 36 ''' 

深拷贝

深拷贝就是不光拷贝了当前的列表,同时把列表中的多维元素或容器也拷贝了一份,而不是引用

使用copy模块中的 deepcopy 函数可以完成深拷贝

# 深拷贝 就是不光拷贝了当前的列表,同时把列表中的多维元素也拷贝了一份 import copy varlist = [1,2,3,[4,5,6,7]] # 使用 copy模块中 深拷贝方法 deepcopy newlist = copy.deepcopy(varlist) del newlist[3][1] print(newlist[3], id(newlist[3])) print(varlist[3], id(varlist[3])) ''' [4, 6, 7] 40 [4, 5, 6, 7] 60 ''' 

列表推导式

List-Comprehensions

列表推导式提供了一个更简单的创建列表的方法。

常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列。

采用一种表达式的方法,对数据进行过滤或处理,并且把结果组成一个新的列表

一,基本的列表推到式使用方式

# 1 假设我们想创建一个平方列表 # 使用普通方法完成 varlist = [] for i in range(10): varlist.append(i2) # print(varlist) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # 使用 map函数和list完成 varlist = list(map(lambda x: x2, range(10))) # print(varlist) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # 使用列表推到式完成 下面这个列表推到式和第一种方式是一样的 varlist = [i2 for i in range(10)] # print(varlist) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # 2。 '1234' ==> [2,4,6,8] # 常规方法完成需求 varstr = '1234' newlist = [] for i in varstr: newlist.append(int(i)*2) # print(newlist) # [2, 4, 6, 8] # 使用列表推到式完成上面的需求 newlist = [int(i)*2 for i in varstr] # print(newlist) # [2, 4, 6, 8] 

二,带有判断条件的列表推导式式

# 0-9 求所有的奇数,==> [1,3,5,7,9] # 常规方法完成 newlist = [] for i in range(10): if i % 2 == 1: newlist.append(i) print(newlist) # [1, 3, 5, 7, 9] # 列表推到式完成 newlist = [i for i in range(10) if i % 2 == 0] # print(newlist) # [1, 3, 5, 7, 9] 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129200.html

(0)
上一篇 2025-08-25 21:26
下一篇 2025-08-25 21:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信