第5章-组合序列类型
#全部是重点知识,必须会。
了解序列和索引|的相关概念
掌握序列的相关操作
掌握列表的相关操作
掌握元组的相关操作
掌握字典的相关操作
掌握集合的相关操作
1,序列和索引
1,序列是一个用于存储多个值的连续空间,每一个值都对应一个整数的编号,称为 索引。

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])
序列

#序列的相加
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函数

列表的遍历操作有三种:
- 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)
列表类型

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)
列表排序

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)
列表生成式

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)

#创建二维列表
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直接用英文的逗号隔开
- 元组中只有一个元素的时候,逗号也不能省略

#使用小括号创建元组
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,字典
字典类型是根据一个信息查找另一个信息的方式构成了"键值对”,它表示索引|用的键和对应的值构成的成对关系。
字典为可变数据类型。其中键是不可变序列。字符串,整数,浮点,元组可以作为字典中的键,但是列表不行。

字典类型

#(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

取值与遍历

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)
相关操作

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
字典生成式

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中的可变数据类型
集合类型

#{}直接创建集合
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
操作符

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

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)

6,练习题



相关文章:
第5章-组合序列类型
#全部是重点知识,必须会。 了解序列和索引|的相关概念 掌握序列的相关操作 掌握列表的相关操作 掌握元组的相关操作 掌握字典的相关操作 掌握集合的相关操作1,序列和索引 1,序列是一个用于存储多个值的连续空间,每一个值都对应一…...
大话光学原理:2.最短时间原理、“魔法石”与彩虹
一、最短时间原理 1662年左右,费马在一张信纸的边角,用他那著名的潦草笔迹,随意地写下了一行字:“光在两点间选择的路,总是耗时最少的。”这句话,简单而深邃,像是一颗悄然种下的种子,…...
spring tx @Transactional 详解 `Advisor`、`Target`、`ProxyFactory
在Spring中,Transactional注解的处理涉及到多个关键组件,包括Advisor、Target、ProxyFactory等。下面是详细的解析和代码示例,解释这些组件是如何协同工作的。 1. 关键组件介绍 1.1 Advisor Advisor是一个Spring AOP的概念,它包…...
`CyclicBarrier` 是 Java 中的一个同步辅助工具类,它允许一组线程相互等待,直到所有线程都达到了某个公共屏障点(barrier point)
CyclicBarrier 是 Java 中的一个同步辅助工具类,它允许一组线程相互等待,直到所有线程都达到了某个公共屏障点(barrier point)。当所有线程都到达屏障点时,它们可以继续执行后续操作。CyclicBarrier 的特点是可以重复使…...
华为机试HJ108求最小公倍数
华为机试HJ108求最小公倍数 题目: 想法: 要找到输入的两个数的最小公倍数,这个最小公倍数要大于等于其中最大的那个数值,遍历最大的那个数值的倍数,最大的最小公倍数就是输入的两个数值的乘积 input_number_list i…...
Debezium报错处理系列之第114篇:No TableMapEventData has been found for table id:256.
Debezium报错处理系列之第114篇:Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:256. Usually that means that you have started reading binary log within the logic…...
开发者必看:MySQL主从复制与Laravel读写分离的完美搭配
介绍 主从同步配置的主要性不用多说,本文将详细介绍了如何在MySQL数据库中设置主从复制,以及如何在Laravel框架中实现数据库的读写分离。 通过一系列的步骤,包括修改MySQL配置、创建同步账户、获取二进制日志文件名和位置、导出主服务器数据…...
二战架构师,拿下
前言 已经许久更新文章了,并不是因为我懒了,而是在备考系统架构师考试。个人感觉还是比较幸运的,低分飘过。现阶段任务也算完成了,记录一下感受。 什么是软考 软考,全称“计算机技术与软件专业技术资格(…...
泛微开发修炼之旅--35关于基于页面扩展和自定义按钮实现与后端交互调用的方法
文章链接:35关于基于页面扩展和自定义按钮实现与后端交互调用的方法...
原创作品—数据可视化大屏
设计数据可视化大屏时,用户体验方面需注重以下几点:首先,确保大屏信息层次分明,主要数据突出显示,次要信息适当弱化,帮助用户快速捕捉关键信息。其次,设计应直观易懂,避免复杂难懂的…...
AdaBoost集成学习算法理论解读以及公式为什么这么设计?
本文致力于阐述AdaBoost基本步骤涉及的每一个公式和公式为什么这么设计。 AdaBoost集成学习算法基本上遵从Boosting集成学习思想,通过不断迭代更新训练样本集的样本权重分布获得一组性能互补的弱学习器,然后通过加权投票等方式将这些弱学习器集成起来得到…...
uniapp内置组件uni.navigateTo跳转后页面空白问题解决
文章目录 导文空白问题 导文 在h5上跳转正常 但是在小程序里面跳转有问题 无任何报错 页面跳转地址显示正确,但页面内容为空 空白问题 控制台: 问题解决: 方法1: 可能是没有注册的问题,把没注册的页面 注册一下。 方…...
使用树莓派进行python开发,控制电机的参考资料
网站连接:https://www.cnblogs.com/kevenduan?page1 1、简洁的过程步骤, 2、有代码示例, 3、有注意事项,...
protobuf的使用
protobuf:是一种数据格式,独立于平台,独立于语言,是一种二进制格式,可以存储更加复杂的数据结构,比如图,树,结构体,类 作用: 1.持久化:把数据存…...
笔记15:while语句编程练习
练习一: 编写程序,求 2^24^26^2...n^2? -直到累加和大于或等于 10000 为止,输出累加和 -输出累加式中的项数,以及最大的数 n #include<stdio.h> int main() {int sum 0;int i 1;int n 0;while(sum < 10000)//将sum…...
打开excel时弹出stdole32.tlb
问题描述 打开excel时弹出stdole32.tlb 如下图: 解决方法 打开 Microsoft Excel 并收到关于 stdole32.tlb 的错误提示时,通常意味着与 Excel 相关的某个组件或类型库可能已损坏或不兼容。 stdole32.tlb 是一个用于存储自动化对象定义的类型库&#x…...
349. 两个数组的交集
哈喽!大家好,我是奇哥,一位专门给面试官添堵的职业面试员 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟! 文章目录 一、题目二、答案三、总结 一、题目 …...
重庆交通大学数学与统计学院携手泰迪智能科技共建的“智能工作室”
2024年7月4日,重庆交通大学数学与统计学院与广东泰迪智能科技股份有限公司携手共建的“智能工作室”授牌仪式在南岸校区阳光会议室举行。此举标志着数统学院与广东泰迪公司校企合作新篇章的开启,也预示着学院在智能科技教育领域的深入探索和实践。 广东…...
Pandas在生物信息学中的应用详解
Pandas在生物信息学中的应用详解 引言 生物信息学作为一门将计算机科学和生物学相结合的跨学科领域,正随着高通量实验技术的飞速发展而日益重要。Pandas,作为Python中一个强大的数据处理库,为生物信息学研究提供了便捷高效的数据处理和分析…...
ByteMD富文本编辑器的vue3配置
Git地址:GitHub - bytedance/bytemd: ByteMD v1 repository 控制面板输入 npm install bytemd/vue-next 下载成功后在src/main.ts中引用 import "bytemd/dist/index.css";引入后保存,下面是一些插件,比如说我用到gmf和hightLight&…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
