Python学习4 列表基础知识和常用函数

列表

1.格式
在这里插入图片描述
2.增删改查
列表下标:
0–n-1
-n-(-1)
在这里插入图片描述

#对列表进行切片
#0-(n-1)
#-n-(-1)
list=['dq','python','mm']
print(list[0:2])#[0,2)
print(list[-3:-2])#[-3,-2)
#输出
#['dq', 'python']
#['dq']

题目:
【1:4:2】:[1,4),步长为2
下标从0开始
在这里插入图片描述

3.添加元素
x元组,可迭代对象

在这里插入图片描述

#添加元素append
list=['dq','python','mm']
print(list)
list2=['dq','python','mm']
list.append(list2)
print(list)
list.append('2435')
print(list)
#输出
# ['dq', 'python', 'mm']
# ['dq', 'python', 'mm', ['dq', 'python', 'mm']]
# ['dq', 'python', 'mm', ['dq', 'python', 'mm'], '2435']#添加元素insert
list=['dq','python','mm']
print(list)
list.insert(2,'33')
print(list)
#输出
#['dq', 'python', 'mm']
#['dq', 'python', '33', 'mm']#添加元素extend
list=['33','jjjk','dq']
print(list)
x=('3243','3454')
list.extend(x)
print(list)

注意:可以直接使用+,连接两个列表

a=[1,2]
b=[5,6]
c=a+b
print(a,b,c,sep=' ',end='\n')
#[1, 2] [5, 6] [1, 2, 5, 6]

4.删除元素
在这里插入图片描述

#删除元素pop
list=['dq', 'python', 'mm']
print(list)
list.pop()
print(list)
list.pop(0)
print(list)
#输出
#['dq', 'python', 'mm']
# ['dq', 'python']
# ['python']#删除元素remove
list=['dq', 'python', 'mm']
print(list)
list.remove('python')
print(list)
#清空元素clear
list=['dq', 'python', 'mm']
print(list)
list.clear()
print(list)#[]
#清空元素del
list=['dq', 'python', 'mm']
print(list)
del list
print(list)#<class 'list'>

题目:
1)
remove(3):删除3这个元素
在这里插入图片描述
2)
pop(4):删除下标4对应的元素
从0开始
在这里插入图片描述
3)
del删除下标3到后面全部
下标从0开始
在这里插入图片描述

5.修改元素
在这里插入图片描述

#修改元素
list=['dq', 'python', 'mm']
list[0]='i love python'
print(list[0])
print(list)

6.查询元素
(1)index查询指定数据在列表里面的最小索引,如果没有,会报错

(2)count查询指定数据在列表中出现的次数

(3)in运算符,查询指定函数是否在列表中,返回布尔数据

#查询元素
#(1)index查询指定数据在列表里面的最小索引,如果没有,会报错# (2)count查询指定数据在列表中出现的次数
# 
# (3)in运算符,查询指定函数是否在列表中,返回布尔数据name = ['小陈','小红','小王','老王','老陈','小刘','小风','小刚','小赵']
print(name.index('小王'))
print(name.count('小王'))
print('赵日天' in name)
#输出
# 2
# 1
# False

list的地址传递

#地址传递
num1=[0,0,100]
num2=num1
num1[1]=88
print(num2)
#输出
#[0, 88, 100]

使用内置函数 id() 可以获取到一个变量的内存地址
代码:

#地址传递
num1=[0,0,100]
num2=num1
#26983000 26983000
print(id(num1),id(num2),sep=' ')
num1[1]=88
#26983000 26983000
print(id(num1),id(num2),sep=' ')
print(num2)
#输出
#[0, 88, 100]

list的遍历

在这里插入图片描述


#列表遍历for
list=['小陈','小红','小王','老王','老陈','小刘','小风','小刚','小赵']
for i in list:print(i)# 列表遍历while
i=0
while i<len(list):print(list[i])i+=1

list的排序

在这里插入图片描述

使用 list.sort() 会将 list 进行升序排序,返回 NoneType ,影响 list 本身【小-大】
使用 sorted(list) 会将 list 进行升序排序,返回 list ,不影响 list 本身【小-大】

#list排序sort-影响本身
list = ['2341', '962', '67', '34567']
print(list)
list.sort()
print(list)
#list排序sorted-不影响本身
list = ['2341', '962', '67', '34567']
print(list)
print(sorted(list))
print(list)

翻转:reserve


#list翻转
list = ['2341', '962', '67', '34567']
print(list)
list.reverse()
print(list)

编程实现冒泡排序算法,实现对[6, 5, 3, 1, 8, 7, 2, 4]的排序。
思想:让一个数字和它相邻的下一个数字进行比较运算,如果前一个数字大于后一个数字,则交换两个数据的位置。

#列表冒泡排序
#按第一个字符ASCII码排序
list=['2341','962','67','34567']print(list)
for i in range(len(list)-1):for j in range(len(list)-1-i):if list[j]>list[j+1]:temp=list[j]list[j]=list[j+1]list[j+1]=tempprint(list)

去除列表重复元素

1、使用set函数
set是定义集合的,无序,非重复

numList = [1,1,2,3,4,5,4]
print(list(set(numList)))
#[1, 2, 3, 4, 5]

2、先把list重新排序,然后从list的最后开始扫描

a = [1, 2, 4, 2, 4, 5,]
a.sort()
last = a[-1]
for i in range(len(a) - 2, -1, -1):if last == a[i]:del a[i]else:last = a[i]
print(a) #[1, 2, 4, 5]

3、使用字典函数

a=[1,2,4,2,4,]b={}b=b.fromkeys(a)c=list(b.keys())print(c) #[1, 2, 4]

4、append方式

def delList(L):L1 = []for i in L:if i not in L1:L1.append(i)return L1
print(delList([1, 2, 2, 3, 3, 4, 5])) #[1, 2, 3, 4, 5]

5、count + remove方式

def delList(L):for i in L:if L.count(i) != 1:for x in range((L.count(i) - 1)):L.remove(i)return L
print(delList([1, 2, 2, 3, 3, 4]))#[1, 2, 3, 4]

列表的嵌套

在这里插入图片描述
random.randint(a,b):[a,b]

import random
#列表的嵌套
teacher = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
room = [[], [], []]
for i in teacher:room[random.randint(0, 2)].append(i)
print(room)
#输出:
#[[2, 10], [6], [1, 3, 4, 5, 7, 8, 9]]

列表推导式

在这里插入图片描述
range(n):[0,n-1]

#列表推导式
list=[i for i in range(11)]
print(list)
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

列表的复制

浅拷贝是在另一块地址中创建一个新的变量或容器,但是容器内的元素的地址均是源对象的元素的地址的拷贝。也就是说新的容器中指向了旧的元素( 新瓶装旧酒 )。
深拷贝,完全拷贝了一个副本,容器内部元素地址都不一样

浅拷贝:a=b
copy(list)
copy.copy(list)
深拷贝:
copy.deepcopy(list)

#列表的复制b=a,浅拷贝
a=[1,2,'P']
b=a
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空间指向一样
#[1, 2, 'P'] 29181352
#[1, 2, 'P'] 29181352#列表的复制copy1,浅拷贝,指拷贝了一层
a=[1,2,'P']
b=a.copy()
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空间指向不同
# [1, 2, 3] 20006312
# [1, 2, 3] 20007472#列表的复制copy2,浅拷贝,指拷贝了一层
a=[1,2,3,[4,'V','B']]
b=a.copy()
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空间指向不同
# [1, 2, 3] 20006312
# [1, 2, 3] 20007472#列表的复制copy.copy1,浅拷贝,指拷贝了一层
import copy
a=[1,2,'A']
b=copy.copy(a)
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空间指向不同
# [1, 2, 3] 23106584
# [1, 2, 3] 19097440#列表的复制copy.copy2,深拷贝
import copy
a=[1,2,3,['U','X',7]]
b=copy.copy(a)
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')
#地址空间指向不同
# [1, 2, 3] 23106584
# [1, 2, 3] 19097440#列表的复制copy.deepcopy,深拷贝
import copy
a=[1,2,3,['U','O',7]]
b=copy.deepcopy(a)
b[0]='dq'
print(a,id(a),sep=' ',end='\n')
print(b,id(b),sep=' ',end='\n')

题目:
浅拷贝,地址空间指向一样
在这里插入图片描述

列表和字符串的互相转换

同时输出列表和字符串

1.字符串>列表:split()a = 'my first python'b = a.split(" ")print(b)
输出:2.列表>字符串:join()a = ['my', 'first', 'python']b = ' '.join(a)print(b)
输出:

示例:

    def __str__(self):#print('style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+str(self.furnituresList) + '\n')#return 'style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+str(self.furnituresList) + '\n'return 'style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+' '.join(self.furnituresList) + '\n'

练习1-求列表中最大值及下标

#求列表中最大值及下标-sorted
list=[1,345,32435,78,324,7685]
list2=sorted(list)
print(('最大值=%d 下标=%d')%(list2[len(list2)-1],list.index(list2[len(list2)-1])))
#求列表中最大值及下标-for
list = [1, 345, 32435, 78, 324, 7685]
max = index = 0
for i in list:max=max if max >i else iindex=list.index(max)
print(('最大值=%d 下标=%d')%(max,index))

练习2-移除列表空字符串

#移除列表空字符串remove()-每次只移除一个
list = ['小陈', '小红', '', '小王', "", '老王', '老陈', "", '小刘', '小风', '小刚', '小赵']
print(list)
for i in list:if i=='':list.remove('')
print(list)

练习3-计算 chars 列表中每个字符出现的次数

#1
#计算 chars 列表中每个字符出现的次数。chars = ['a', 'c', 'x', 'd', 'p', 'a', 'm', 'q', 's', 't', 'a', 'c']
chars = ['a', 'c', 'x', 'd', 'p', 'a', 'm', 'q', 's', 't', 'a', 'c']
list = []
for i in chars:check = i + "=" + str(chars.count(i))if (check in list) == False:list.append(check)
print(list)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习5 元组基础知识和常用函数

元组概念 元组&#xff1a;a&#xff08;1&#xff0c;23&#xff09; 列表&#xff1a;a [1,23] 创建和访问元组 Python 的元组与列表类似&#xff0c;不同之处在于tuple被创建后就不能对其进行修改&#xff0c;类似字符串。 元组与列表类似&#xff0c;也用整数来对它进行…

STL源码剖析 仿函数

仿函数 也叫函数对象1&#xff0c;具有函数性质的对象&#xff1b;2&#xff0c;这种东西在调用者可以像函数一样地被调用(调用)&#xff0c;在被调用者则以对象所定义的function call operator扮 演函数的实质角色。要将某种 “操作”当做算法的参数&#xff0c;唯一办法就是先…

Python学习6 字典基础知识和常用函数

字典概念 字典是 Python 提供的一种常用的数据结构&#xff0c;它用于存放具有映射关系的数据。为了保存具有映射关系的数据&#xff0c;Python 提供了字典&#xff0c;字典相当于保存了两组数据&#xff0c;其中一组数据是关键数据&#xff0c;被称为 key&#xff1b;另一组数…

Java web后端2 Servlet Maven HttpServlet ServletConfig ServletContext HTTP协议

创建项目 新建项目 Java Enterprise JDK1.8 Web Application Tomcat JAVA 默认 过程需要联网 Maven的配置 IDEA内置Maven 修改本地仓库位置&#xff0c;因为以后会越来越大 替换配置文件&#xff1a; 阿里云镜像下载 Servlet基础 1.动态Web资源开发 2.Servlet是使用J…

STL源码剖析 配接器

配接器(adapters)在 STL组件的灵活组合运用功能上&#xff0c;扮演着轴承、转换器的角色。Adapter这个概念&#xff0c;事实上是一种设计模式(design pattern)。 Design Patterns)) 一书提到23个最普及的设计模式&#xff0c;其中对odopter样式的定义如下&#xff1a;将 一个cl…

中科大 计算机网络3 网络边缘Edge

网络结构 边缘系统 网络核心 接入网 方块&#xff1a;边缘系统(主机) 圆的&#xff1a;网络核心&#xff0c;数据交换作用 连接边缘系统和网络核心的叫做接入网&#xff08;access&#xff09;&#xff0c;把边缘的主机接入到网络核心&#xff08;所以是分布式的&#xff09; …

STL源码剖析 入门开始 STL概论与版本简介

源代码之中时而会出现一些全局函数调用操作&#xff0c;尤其是定义于<stl_construct.h> 之中用于对象构造与析构的基本函数&#xff0c;以及定义于<stl_uninitialized.h>之 中 用 于 内 存 管 理 的 基 本 函 数 &#xff0c; 以及定义于<stl_algobase.h>之中…

中科大 计算机网络4 网络核心Core 分组交换 电路交换

网络核心 电路交换&#xff08;线路交换&#xff09;&#xff1a;打电话之前&#xff0c;先建立一条链路&#xff08;物理&#xff09; 分组交换&#xff1a;存储转发的方式 电路交换&#xff08;线路交换&#xff09; 通过信令&#xff08;控制信息&#xff0c;如&#xf…

STL 源码剖析 空间配置器

以STL的运用角度而言&#xff0c;空间配置器是最不需要介绍的东西&#xff0c;它总是隐藏在一切组件&#xff08;更具体地说是指容器&#xff0c;container&#xff09; 的背后但是STL的操作对象都存放在容器的内部&#xff0c;容器离不开内存空间的分配为什么不说allocator是内…

中科大 计算机网络7 分组延迟 分组丢失 吞吐量

分组丢失和延迟的原因 队列太长没有意义&#xff0c;用户需求 排队&#xff1a;输出能力<到来的分组&#xff0c;需要等待 四种分组延迟 节点处理延迟&#xff1a;确定的 排队延迟&#xff1a;随机&#xff0c;取决于网络情况 一个比特的传输时间&#xff1a; R1Mbps …

STL源码剖析 迭代器iterator的概念 和 traits编程技法

iterator模式定义如下&#xff1a;提供一种方法&#xff0c;使之能够依序巡访某个 聚合物(容器)所含的各个元素&#xff0c;而又无需暴露该聚合物的内部表述方式.STL的中心思想在于&#xff1a;将数据容器(containers)和算法(algorithms)分开&#xff0c;彼此独立设计&#xff…

中科大 计算机网络11 应用层原理

应用层大纲 传输层向应用层提供的服务&#xff0c;形式是Socket API&#xff08;原语&#xff09; 一些网络应用的例子 互联网层次中&#xff0c;应用层协议最多 流媒体应用&#xff1a;直播 网络核心最高的层次就是网络层 应用进程通信方式 C/S&#xff1a; 客户端&…

STL源码剖析 序列式容器 vector 和 ilist

Vector list 单向链表 ilistlist的删除操作&#xff0c;也只有指向被删除元素的迭代器会失效&#xff0c;其他迭代器不会受到影响

中科大 计算机网络5 接入网和物理媒体

接入网 接入网&#xff1a;把边缘&#xff08;主机&#xff09;接入核心&#xff08;路由器&#xff0c;交换机&#xff09; 骨干网【连接主机和主机】和接入网中都有物理媒体 接入方式&#xff1a;有线和无线 带宽共享/独享 接入网&#xff1a;住宅接入modem modem调制解调…

STL源码剖析 序列式容器 deque双端队列

相较于vector的内存拷贝&#xff0c;deque在内存不足时只需要进行内存的拼接操作即可&#xff0c;不需要重新配置、复制、释放等操作&#xff0c;代价就是迭代器的架构不是一个普通的指针&#xff0c;比较复杂d e q u e 的迭代器 deque是分段连续空间。维持其“整体连续”假象…

中科大 计算机网络6 Internet结构和ISP

互联网的结构 端系统通过接入ISPs接入互联网 n个ISP互相连接&#xff1a; IXP,Internet exchage point:互联网接入点&#xff0c;互联网交互点 ISP&#xff1a;互联网服务提供商&#xff0c;提供接入&#xff0c;提供网络【中国移动&#xff0c;中国电信】 ICP&#xff1a…

STL源码剖析 Stack栈 queue队列

随机迭代器用于随机数据访问&#xff0c;所以栈stack不具备此功能

中科大 计算机网络8 协议层次和服务模型

协议层次 协议层次&#xff1a;现实生活中的例子 分层 分层处理和实现复杂系统 图中&#xff0c;左边是模块&#xff0c;右边是分层 计算机的设计是分层&#xff0c;每一层实现一个或一组功能&#xff0c;下层向上层提供服务&#xff1b;但效率比较低 对等层实体通过协议来交换…

STL源码剖析 heap堆结构

heap一般特指max-heap&#xff0c;即最大的元素位于heap和array的首部 heap不提供遍历功能&#xff0c;也不提供迭代功能

中科大 计算机网络9 互联网历史

总纲 计算机网络 早期1960以前 1961-1972 NCP协议&#xff1a;相当于现在的TCP和IP协议 每个节点即是数据的源也是数据的目标