第5章-组合序列类型

#全部是重点知识,必须会。
了解序列和索引|的相关概念
掌握序列的相关操作
掌握列表的相关操作
掌握元组的相关操作
掌握字典的相关操作
掌握集合的相关操作

1,序列和索引

1,序列是一个用于存储多个值的连续空间,每一个值都对应一个整数的编号,称为 索引

image.png

2,属于序列结构的还有列表,元组,集合和字典。

  • 列表和元组称为有序序列
  • 集合和字典称为无需序列
#正向递增
s='helloworld'
for i in range(0,len(s)):print(i,s[i],end='\t\t')  #\t不换行输出
print('\n--------------')
#反向递减
for i in range(-10,0):print(i,s[i],end='\t\t')  #\t不换行输出

切片

  • 省略1。默认从0开始。
  • 省略1,2
  • 省略1,3
  • 省略2。默最后一个元素包含最后一个。
  • 省略2,3
  • 省略3。默认步长为1.
  • 省略1,2,3
s='helloworld'
#切片操作
s1=s[0:5:2]
print(s1)
#如果省略start,默认从0开始。
print(s[:5:2])#省略start和end
print(s[::2])
#step为-1	逆序序列***
print(s[::-1])
print(s[-1:-11:-1])#省略start和step。
print(s[:5:])#省略end,默认到序列的最后一个元素(包含最后一个元素)
print(s[0::1])#省略end和step,
print(s[5::])
print(s[5:])#全省略就都打印
print(s[::])#更改step
print(s[0:5:2])

序列

image.png

#序列的相加
print('*'*10)
print('hello'+'world')
#x in s的使用
s='helloworld'
print('l是在s中存在吗?',('l' in s))
print('k是在s中存在吗?',('k' in s))
#x not in s的使用
print('l是在s中存在吗?',('l'not in s))
print('l是在s中存在吗?',('k'not in s))
#内置函数
print(len(s))#len:列出元素的个数
print(max(s))#按照ACSII码计算
print(min(s))
#序列的相关方法
print('s.index',s.index('o'))
print('s.index',s.index('l'))
print('s.count',s.index('l'))

2,列表

  • 是指一系列的按特定顺序排列的元素组成。
  • 是Python中内置的可变序列
  • 在Python中使用[]定义列表,元素与元素之间使用英文的逗号分隔
  • 列表中的元素可以是任意的数据类型
  • 字符串是不可变序列。
#(1)用 []直接创建列表
#语法:
列表名=[element1,element2...]#(2)用内置函数list()创建列表
#语法:
列表名=list(序列)#列表的删除
#语法:
del 列表名
#直接使用[]创建列表
lst=['python','hello',888,3.14]
print(lst)#内置函数list()创建列表
lst2=list('pythonpyhton')
lst3=list(range(1,10,2))
print(lst2)
print(lst3)#列表是序列中的一种,对序列的操作,运算符,函数均可以使用
print(lst3+lst2)
print(lst3*3)
print(max(lst3))
print(min(lst3))
print(len(lst))print(lst2.index('y'))
print(lst2.count('o'))#列表的删除
lst4=[10,20,30]
del lst4

enum函数

image.png

列表的遍历操作有三种:

  • for循环
  • for循环+索引
  • enumerate
lst=['hello','linux','python','world']
#使用遍历循环for遍历列表元素
for item in lst:print(item)#使用for循环,range函数,len函数,根据索引遍历
for i in range(0,len(lst)):print(i,'--->',lst[i])#enumerate函数
for index,item in enumerate(lst):print(index,item)
print('\n----------')
#手动修改序列号的起始值
for index,item in enumerate(lst,start=1):print(index,item)

列表类型

image.png

lst=['hello','linux','python','world']
print('原列表',lst,id(lst))
lst.append(100)
print('附加后',lst,id(lst))
lst.insert(2,'mysql')
print('指定增加',lst,id(lst))
lst.pop(1)  #这个1是索引
print('先取后删',lst,id(lst))
# lst.remove('linux')
# print('指定删除',lst,id(lst))
lst.reverse()
print('反转后',lst,id(lst))
# lst.clear()
# print('全清后',lst,id(lst))
new_lst=lst.copy()  #会产生新列表对象
print(lst,id(lst))
print(new_lst,id(new_lst))#list的修改操作
lst[1]='mysql'
print(lst)

列表排序

image.png

lst=[1,5,8,10,6,88,3.14]
print('原列表',lst)
lst.sort()
print('升序',lst)
lst.sort(reverse=True)
print('降序',lst)
print('-'*30)
lst2=['a','d','c','B']
print('原列表',lst2)
#忽略大小写。升序排序,先排大写,再排消写。降序反之
lst2.sort(key=str.lower)
print('升序',lst2)
print('-'*30)
#sorted内置函数会产生新列表对象
lst=[1,5,8,10,6,88,3.14]
print('原列表',lst)
#sorted内置函数会产生新列表对象
asc_lst=sorted(lst)
print('升序',asc_lst)
desc_lst=sorted(lst,reverse=True)
print('降序',desc_lst)

列表生成式

image.png

import random   #随机导入数字
lst=[item for item in range(1,11)]
print(lst)lst=[item*item for item in range(1,11)]
print(lst)#random.randint()的用法:用于生成一个指定范围内的随机整数
lst=[random.randint(1,100) for item in range(10)]
print(lst)#从列表中选择符合条件的元素组成新的列表
lst=[i for i in range(10) if i%2==0]
print(lst)

image.png

#创建二维列表
lst=[['城市','环比','同比'],['北京',100,101],['上海',102,103],['深圳',104,105]
]
print(lst)
#遍历二维列表使用双层for循环
for row in lst:     #行for item in row:    #列print(item,end='\t')print()
#列表生成式生成一个4行5列的二维列表
lst2=[[j for j in range(5)] for i in range(4)]
print(lst2)

3,元组

  • 是内置的不可变序列
  • 是python中使用()定义元组,element直接用英文的逗号隔开
  • 元组中只有一个元素的时候,逗号也不能省略

image.png

#使用小括号创建元组
t=('hello',[10,20,30],'python','linux',50)
print(t)#使用内置函数tuple创建元组
t=tuple('helloworld')
print(t)t=tuple([10,20,30])
print(t)#在序列中的应用
print('2在tuple中是否存在:',(10 in t))
print('2在tuple中是否存在:',(10 not in t))
print('min:',min(t))
print('max:',max(t))
print('t.index:',t.index(10))
print('t.count:',t.count(10))#如果元组只有一个element
x=(1)
print(x,type(x))
y=(1,)
print(y,type(y))#tuple的删除
# del x
# print(x)

遍历

t=('python','hello','world')
#根据索引访问元组
print(t[1])#元组切片操作
t2=t[:3:2]
print(t2)#(1)元组的遍历
for item in t:print(item)#(2)使用for+range+len
for i in range(len(t)):print(i,t[i])#使用enumerate
for index,item in enumerate(t):print(index,'--->',item)

tuple

#元组也有生成式,只不过元组的生成式是一个生成器对象,需要转换成tuple或list才能查看。
t=(i for i in range(1,4))
print(t)
# t=tuple(t)
# print(t)
# #遍历1
# for item in t:
#     print(item)
#遍历2
print(t.__next__())
print(t.__next__())
print(t.__next__())
#都取完了,如果再打印就为空
t=tuple(t)
print(t)

4,字典

字典类型是根据一个信息查找另一个信息的方式构成了"键值对”,它表示索引|用的键和对应的值构成的成对关系。

字典为可变数据类型。其中键是不可变序列。字符串,整数,浮点,元组可以作为字典中的键,但是列表不行。

image.png

字典类型

image.png

#(1)创建字典
d={10:'cat',20:'dog',30:'pet',20:'zoo'}
print(d)    #key相同时,value值进行了覆盖#(2)zip函数
lst1=[10,20,30]
lst2=['ls','cd','pwd','cs']
zipobj=zip(lst1,lst2)
print(zipobj)   #<zip object at 0x019AC1C8>
#print(list(zipobj)) #[(10, 'ls'), (20, 'cd'), (30, 'pwd')]
d=dict(zipobj)
print(d)    #{10: 'ls', 20: 'cd', 30: 'pwd'}#使用参数创建dict
d=dict(cd=1,ls=2)
print(d)    #左侧为key,右侧为valuet=(10, 20,30)
print({t:10}) # t是key, 10是value , 元组是可以作为字典中的key#字典属于序列
print('max:',max(d))
print('min:',max(d))
print('len:',len(d))    #看的是元素的个数#删除 
del d

image.png

取值与遍历

image.png

d={'hello':10,'world':20,'python':30}
#访问字典中的元素
#(1)使用d[key]
print(d['python'])
#(2)d.get(key)
print(d.get('hello'))#二者之间是有区别的,如果key不存在,d[key]报错d.get(key)可以指定默认值
print(d.get('java','不存在'))#dict遍历
for item in d.items():print(item) #key=value组成的一个元素
#在使用for遍历时,分别获取key,value
for key,value in d.items():print(key,value)

相关操作

image.png

d={'hello':10,'world':20,'python':30}
print(d)
#添加
d['linux']=40
print(d)#获取dict中所有的key
key=d.keys()
print(key)
print(list(key))
print(tuple(key))#获取字典中所有的value
values=d.values()
print(values)
print(list(values))
print(tuple(values))#如何将字典中的数据转侧灰姑娘键值对的形式,以元组的形式展示
lst=list(d.items())
print(lst)

空字典,空元组,空列表为False

字典生成式

image.png

import random
d={item:random.randint(1,100) for item in range(4)}
print(d)#创建两个列表
lst1=[1001,1002,1003]
lst2=['hello','world','python']
d={key:value for key,value in zip(lst1,lst2)}
print(d)

5,集合

  • Python中的集合与数学中集合的概念一致
  • Python中的集合是一个无序的不重复元素序列
  • 集合中只能存储不可变数据类型
  • 在Python中集合使用{}定义
  • 与列表、字典一样,是Python中的可变数据类型

集合类型

image.png

#{}直接创建集合
s={10,20,30}
print(s)#使用set()创建集合
s=set() #创建空集合
print(s)s={}#创建的是字典
print(s,type(s))s=set('helloworld')
print(s)s2=set([10,20,30])
print(s2)s3=set(range(1,10))
print(s3)
#集合属于序列的一种,可以用序列测试
#max,min,len,in ,not in#删除
del s3

操作符

image.png

A={10, 20,30, 40, 50}
B={30, 50,88, 76, 20}
print(A&B)

相关操作

image.png

A={10, 20,30, 40, 50}
#A.add(100)
#A.remove()
# A.clesr
# print(A)#集合遍历
for item in A:print(item)for index,item in enumerate(A):print(index,'-->',item)pass#生成式
s={i for i in range(1,10)}
print(s)s={i for i in range(1,10) if i%2==1}
print(s)

image.png

6,练习题

image.png

image.png

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

美容师有什么话术技巧?美业人如何提升自己的销售技巧?博弈美业门店管理系统分享经验

作为一名美容师&#xff0c;有一些话术和销售技巧可以帮助你提升服务质量和销售业绩。以下是博弈美业收银系统分享的一些建议&#xff1a; 1.建立信任&#xff1a; 在与客户交流时&#xff0c;表现出真诚、友好和专业的态度。倾听客户的需求&#xff0c;并给予针对性的建议&a…

降Compose十八掌之『见龙在田』| Modifier

公众号「稀有猿诉」 原文链接 降Compose十八掌之『见龙在田』| Modifier 通过前面的文章我们学会了如何使用元素来构建和填充我们的UI页面&#xff0c;但这只完成了一半&#xff0c;元素还需要装饰&#xff0c;以及进行动画和事件响应&#xff0c;这才能生成完整的UI。这…

洛谷 数学进制 7.9

P1100 高低位交换 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码一 #include<bits/stdc.h> using namespace std; typedef long long ll; #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)const ll N1e510; char a[N];int main() {IOS;ll a;int b[32]…

关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法

在使用Qt模型视图框架的时候&#xff0c;你可能会遇见这种情况&#xff1a;给QTableView设置设置模型的时候&#xff0c;网模型里面插入数据&#xff0c;因为数据是一行一行插入的&#xff0c;即要使用model的appandRow函数&#xff0c;但有时候最后一行数据没有填满一行&#…

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意&#xff1a;B树中B不是代表二叉树&#xff08;binary&#xff09;&#xff0c;而是代表平衡&#xff08;balance&#xff09;&#xff0c;因为B树是从最早的平衡二叉树演化而来&#xff0c;但是B树不是一个二叉树。 B树的高度一般在2~…

新火种AI|OpenAI的CEO又有新动作?这次他成立了AI健康公司

作者&#xff1a;一号 编辑&#xff1a;美美 AI技术即将改变医疗健康市场。 就在前两天&#xff0c;人工智能和医疗健康领域迎来了一个重要时刻。OpenAI的CEO萨姆阿尔特曼&#xff08;Sam Altman&#xff09;与Thrive Global的CEO阿里安娜赫芬顿&#xff08;Arianna Huffing…

业务咨询方案 + IT落地方案建议设计

近期&#xff0c;在深入探索咨询方案的实施与落地路径时&#xff0c;体会到了一系列心得与启示&#xff0c;旨在为未来的项目实践提供可借鉴的蓝本。 咨询方案的精髓&#xff0c;在于“业务引领&#xff0c;IT支撑”的核心理念。所以方案的前提是在于业务的梳理&#xff1b; …

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法,亲测有效!!!

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 一、问题分析 二、报错原因 三、解决思路 四、解决方法 五、总结 博主v&#xff1a;XiaoMing_Java 博主v&#x…

淮北在选择SCADA系统时,哪些因素会影响其稳定性?

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 在选择SCADA系统时&#xff0c;稳定性是一个关键因素&#xff0c;因为它直接影响到生产过程的连续性和安全性。以下是一些影响SCADA系统稳定性的因素&#xff1a; 硬件质量…

百度文心4.0 Turbo开放,领跑国内AI大模型赛道!

百度文心4.0 Turbo开放&#xff0c;领跑国内AI大模型赛道&#xff01; 前言 文心一言大模型 就在7月5日&#xff0c;在2024世界人工智能大会 (WAIC) 上&#xff0c;百度副总裁谢广军宣布文心大模型4.0 Turbo正式向企业客户全面开放&#xff01;这一举动直接引发了业界的关注。那…

【C++知识点总结全系列 (08)】:面向对象编程OOP

这里写目录标题 1、OOP概述(1)面向对象四大特征A.抽象B.封装C.继承D.多态 (2)构造函数A.What&#xff08;什么是构造函数&#xff09;B.Why&#xff08;构造函数的作用&#xff09;C. Which&#xff08;有哪些构造函数&#xff09; (3)析构函数A.What&#xff08;什么是析构函数…

【JS|第21期】JavaScript模块化:深入解析三种文件暴露方式

日期:2024年7月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083…

全志A527 T527 android13支持usb摄像头

1.前言 我们发现usb摄像头在A527 android13上面并不能正常使用,需要支持相关的摄像头。 2.系统节点查看 我们查看系统是否有相关的节点生成,发现/dev/video相关的节点已经生成了。并没有问题,拔插正常。 3.这里我们需要查看系统层是否支持相关的相机, 我们使用命令进行…

【INTEL(ALTERA)】为什么我使用 PIO 边缘捕获中断的 Nios® II 设计不能正常工作?

目录 说明 解决方法 说明 当用户选择了不正确的边缘捕获设置&#xff0c;从而阻止触发中断时&#xff0c;可能会出现此问题。 在 PIO&#xff08;并行 I/O&#xff09;英特尔 FPGA IP内核中&#xff0c;如果“启用单个位设置/清除”选项被关闭&#xff0c;则将任何值写入边…

vue实例和容器的一夫一制——04

//准备容器 <div classapp> <h1>{{mag}}</h1> </div> //准备容器 <div classapp> <h1>{{mag}}</h1> </div> //准备容器 <div classapp2> <h1>{{name}}</h1> </div> <script> // 验…

基于Java+SpringMvc+Vue技术的药品进销存仓库管理系统设计与实现系统(论文7000字参考+源码+LW+部署讲解)

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

Java虚拟机面试题汇总

目录 1. JVM的主要组成部分及其作用&#xff1f; 1.1 运行时数据区划分&#xff1f; 1.2 哪些区域可能会发生OOM&#xff1f; 1.3 堆和栈的区别&#xff1f; 1.4 内存模型中的happen-before是什么&#xff1f; 2. HotSpot虚拟机对象创建流程&#xff1f; 2.1 类加载过程…

7.9总结

容易推出当移动i与j时等价于j-i-1个左右交换&#xff0c;且每次交换逆序数的奇偶改变&#xff08;无相同元素&#xff09;&#xff0c;假设有一个状态c&#xff0c;且a与b必须以等量的左右交换转移为c&#xff0c;则必须数量相同&#xff0c;元素相同&#xff08;使用异或解决&…

tomcat 项目迁移,无法将项目作为服务service启动

背景 测试服务器需要迁移到正式服务器上&#xff0c;为了方便省事&#xff0c;将测试服务器上的一些文件直接复制到正式服务器 问题 使用startup启动项目之后&#xff0c;可以直接使用使用tomcat9w启动&#xff0c;或者作为服务service启动的时候&#xff0c;显示无法访问到资源…

欧拉部署nginx

1.下载nginx 下载地址&#xff1a;https://nginx.org/en/download.html 选择稳定版本 下的镜像文件进行下载 2.解压Nginx包 cd /root/nginx tar -zxvf nginx-1.26.0.tar.gz cd nginx-1.26.03.安装nginx相关依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl o…