Preparatory Class-Day6------序列类型---------列表

2024-05-12 11:38

本文主要是介绍Preparatory Class-Day6------序列类型---------列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、定义: 可以存储多个元素的数据类型

变量名 = [元素1, 元素2, ... ]

定义空列表: a=[]     (# 类似字符串 a='')

二、特点:

(1) 列表是有序的;
(2)   变量名--->列表对象---->各个元素值,逐个绑定
(3) 列表可以有多种元素类型
(4)   列表中的元素可以修改

      内存分配机制:

  • 当创建N个元素的List时,Python的动态内存分配长N+1个元素的内存,第一个元素存储列表长度,和列表的元信息。如下图。

三、列表的操作(运算符、索引、切片)---新创建

       1. 运算符 + * in is >,+ 号用于组合列表,* 号用于重复列表

*  注意列表list 不是基础数据类型,==对象的is不同,即为 不同对象
* 列表的整切片是新创建对象

           eg. 

    names = ['tom','jerry, 'kate']name = ['tom','jerry, 'kate']print(a+b)  #append()print(a*3)	#重复成新列表print(name in names)

运行结果:

['tom', 'jerry', 'kate', 'tom', 'jerry', 'kate']
['tom', 'jerry', 'kate', 'tom', 'jerry', 'kate', 'tom', 'jerry', 'kate']
False

        2.  索引

index() ·  整数,负数,   
·  越界会出现异常, (-len, len -1)
访问嵌套列表:    列表名[i][j]
    eg.print(name == names)print(name is names)print(id(name[1]), id(name[1])
    plactice:# 1. 对换列表元素name[i], name[j] = name[j],name[i]# 2. 列表遍历替换names = ['~'+i+'~'  for i in name]

         3.  常用函数

类型

方法

说明

参数

list.append(obj)

在列表末尾添加一个新的对象

不管这个对象是什么数据类型,

append()都会以一个新元素的方式追加至结尾

list.extend(seq)

在列表末尾追加多个值

seq以元素列表的形式进行追加,

extend()相当于合并两个列表

list.insert(index, obj)

将指定对象插入列表的指定位置。

index -- 对象obj需要插入的索引位置。

obj -- 要插入列表中的对象。

list.pop(obj=list[-1])

移除列表中的一个元素,

并且返回该元素的值。

不填写参数,默认最后一个元素

pop()方法带返回值

del list[index]

根据index索引删除列表中的一个元素

不填写参数,默认最后一个元素

del 不带返回值

list.remove(obj)

函数用于移除列表中某个值的第一个匹配项。

该方法没有返回值

但是会移除两种中的某个值的第一个匹配项。

list[index]=new_obj

根据索引位置直接赋值即可

 

list[index]

可以直接根据索引值查询

 

list[start:end]

也可以通过遍历索引的方式查询多值

 

list.index(obj)

函数用于从列表中找出某个值第一个匹配项

的索引位置。

obj -- 查找的对象。

max(list)

返回列表元素中的最大值

list -- 要返回最大值的列表

min(list)

返回列表元素中的最小值

list -- 要返回最小值的列表。

统计 

list.count(obj)

统计某个元素在列表中出现的次数

obj -- 列表中统计的对象。

len(list)

统计列表中的元素个数

list -- 要计算元素个数的列表。

排序

list.sort([func])

函数用于对原列表进行排序

func -- 可选参数,

如果指定了该参数会使用该参数的方法进行排序。

list.reverse()

函数用于反向列表中元素

该方法没有返回值,

但是会对列表的元素进行反向排序。

复制

list.copy()

函数用于复制列表,类似于list_copy[:]

返回复制后的新列表

清空

list.clear()

函数用于清空列表,类似于del list[:]

该方法没有返回值


(表格引用自https://www.cnblogs.com/hezhefly/p/7908460.html)

五、列表的拷贝

在拷贝后,原变量的修改,会对拷贝结果造成影响:

    1.  赋值法,   原变量的修改完全修改了拷贝结果;

    2.  浅拷贝,   原变量的修改会对列表元素的子对象造成影响;

    3.  深拷贝,   原变量的修改影响拷贝结果。

      

import copya = [1, 2, 3, 4, ['a', 'b']] # 原始对象b = a # 赋值,传对象的引用c = copy.copy(a) # 对象拷贝,浅拷贝m = a[:]d = copy.deepcopy(a) # 对象拷贝,深拷贝a.append(5) # 添加对象aa[0] = 'new'a[4].append('c') # 修改对象a中的['a', 'b']数组对象print('修改 a = ', a)print('赋值 b = ', b, end = '会把复制变量完全修改\n')print('浅拷贝 c = ', c, end = '修改会影响复制变量元素层的子层\n')print('整切片 c = ', m, end = '修改会影响复制变量元素层的子层\n')print('深拷贝 d = ', d, end = '修改完全不影响复制变量\n')y 

运行结果:

修改   a =  ['new', 2, 3, 4, ['a', 'b', 'c'], 5]
赋值   b =  ['new', 2, 3, 4, ['a', 'b', 'c'], 5]会把复制变量完全修改
浅拷贝 c =  [1, 2, 3, 4, ['a', 'b', 'c']]修改会影响复制变量元素层的子层
整切片 c =  [1, 2, 3, 4, ['a', 'b', 'c']]修改会影响复制变量元素层的子层
深拷贝 d =  [1, 2, 3, 4, ['a', 'b']]修改完全不影响复制变量
深拷贝后数值拷贝情况 1808421728 1808421728

六、一些小点

1. map() 方法 使用指定方法去作用传入的每个可迭代对象的元素,生成新的可迭代对象

map(function, iterable, ...)

参数

  • function -- 函数,有两个参数
  • iterable -- 一个或多个序列

返回值

Python 2.x 返回列表。

Python 3.x 返回迭代器(需要加一个list()方法)。

b = list(map(float, a)) 
等同于
b = [float(i) for i in a]

  • 功能同列表生成器 ,对可迭代的序列对象进行逐个修改



这篇关于Preparatory Class-Day6------序列类型---------列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982529

相关文章

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

KLayout ------ 旋转物体90度并做平移

KLayout ------ 旋转创建的物体 正文 正文 前段时间,有个小伙伴留言问我,KLayout 中如何旋转自己创建的物体,这里特来说明一下。 import pyapoly = pya.DPolygon([pya.DPoint(0, 0), pya.DPoint(0, 5), pya

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

C#中,decimal类型使用

在Microsoft SQL Server中numeric类型,在C#中使用的时候,需要用decimal类型与其对应,不能使用int等类型。 SQL:numeric C#:decimal

说一说三大运营商的流量类型,看完就知道该怎么选运营商了!

说一说三大运营商的流量类型,看完就知道该怎么选运营商了?目前三大运营商的流量类型大致分为通用流量和定向流量,比如: 中国电信:通用流量+定向流量 电信推出的套餐通常由通用流量+定向流量所组成,通用流量比较多,一般都在100G以上,而且电信套餐长期套餐较多,大多无合约期,自主激活的卡也是最多的,适合没有通话需求的朋友办理。 中国移动:通用流量+定向流量 移动推出的套餐通常由通用流量+定向

Python分解多重列表对象,isinstance实现

“”“待打印的字符串列表:['ft','bt',['ad',['bm','dz','rc'],'mzd']]分析可知,该列表内既有字符对象,又有列表对象(Python允许列表对象不一致)现将所有字符依次打印并组成新的列表”“”a=['ft','bt',['ad',['bm','dz','rc'],'mzd']]x=[]def func(y):for i in y:if isinst

微服务中RPC的强类型检查与HTTP的弱类型对比

在微服务架构中,服务间的通信是一个至关重要的环节。其中,远程过程调用(RPC)和HTTP是两种最常见的通信方式。虽然它们都能实现服务间的数据交换,但在类型检查方面,RPC的强类型检查和HTTP的弱类型之间有着显著的差异。本文将深入探讨这两种通信方式在类型检查方面的优缺点,以及它们对微服务架构的影响。 一、RPC的强类型检查 RPC的强类型检查是其核心优势之一。在RPC通信中,客户端和服务端都使

代码随想录——摆动序列(Leetcode376)

题目链接 贪心 class Solution {public int wiggleMaxLength(int[] nums) {if(nums.length <= 1){return nums.length;}// 当前一对差值int cur = 0;// 前一对差值int pre = 0;// 峰值个数int res = 1;for(int i = 0; i < nums.length -

一二三应用开发平台应用开发示例(4)——视图类型介绍以及新增、修改、查看视图配置

调整上级属性类型 前面为了快速展示平台的低代码配置功能,将实体文件夹的数据模型上级属性的数据类型暂时配置为文本类型,现在我们调整下,将其数据类型调整为实体,如下图所示: 数据类型需要选择实体,并在实体选择框中选择自身“文件夹” 这时候,再点击生成代码,平台会报错,提示“实体【文件夹】未设置主参照视图”。这是因为文件夹选择的功能页面,同样是基于配置产生的,因为视图我们还没有配置,所以会报错。