序列的有关知识

news2024/11/17 3:47:09
  • 📢博客主页:盾山狂热粉的博客_CSDN博客-C、C++语言,机器视觉领域博主
  • 📢努力努力再努力嗷~~~✨

💡大纲

⭕列表、元组、字符串都是序列,列表是可变序列,元组和字符串是不可变序列

一、跟序列相关的操作符

(一)+(拼接)*(重复)

👉在python中,每一个变量都有三个属性:唯一标志、类型、值

  • 唯一标志:在变量创建后不可修改

 

  • 对于可变序列:列表来说,在对其进行重复操作后,id值不变
  • 对于不可变序列:元组、字符串来说,重复操作后id值会变化,因为不能对其本身进行直接操作,是创建了一个新的变量

(二)同一性运算符:is is not

👉判断是不是同一对象,对于可变数据类型来说,在python中创建两个相同内容的变量,其id值不同;对于不可变数据类型来说,就算创建了两个相同内容的变量,在python中也只会创建一个地址用来存储该内容

(三)包含问题:in not in 

(四)删除一个或多个指定对象:del

👉在删除连续区域的内容时,切片也可以满足删除的要求,但是对于指定不同位置的删除,切片是做不到的

 

二、跟序列相关的函数

(一)列表、元组、字符串相互转换

1、可迭代对象转换为列表

list("fishc") # ['f', 'i', 's', 'h', 'c']
list((1,2,3,4,5)) # [1, 2, 3, 4, 5]

2、可迭代对象转换为元组

tuple("fishc") # ('f', 'i', 's', 'h', 'c')
tuple([1,2,3,4,5]) # (1, 2, 3, 4, 5)

3、可迭代对象转换为字符串

age = 24
print("My age is "+str(age))    # My age is 24

(二)min() max()

👉对比传入的可迭代对象,返回最小值或最大值

  • 数字类型比较数值大小
  • 字符串类型比较编码值大小
s = [1,1,2,3,5]
min(s) 

x = "fishc"
min(x) # 'c'

👉对于空列表,直接取最小值会报错,需要在min函数中给定默认参数default=……。此时,如果为空,会输出默认参数的内容

(三)len() sum() 

👉len函数是有长度限制的,最大为2^63-1

👉sum函数可以指定求和的起始值

(四)sorted() reversed()

💡列表进行临时排序---sorted(可迭代对象)

👉原列表保持不变,返回排序后的列表

👉可以处理所有类型的可迭代对象,返回一个列表

list1 = [2, 5, 2, 8, 19, 3, 7]
list2 = sorted(list1)
print(list1) # [2, 5, 2, 8, 19, 3, 7]
print(list2) # [2, 2, 3, 5, 7, 8, 19]
sorted(list1, reverse = True) # [19, 8, 7, 5, 3, 2, 2] 降序

👉参数key可以规定排序算法。这里使用len函数,排序会按照字符串的长度去排序

t = ["Apple","Banana","Fishc","Pen","Book"]
sorted(t) # ['Apple', 'Banana', 'Book', 'Fishc', 'Pen']
sorted(t,key=len) # ['Pen', 'Book', 'Apple', 'Fishc', 'Banana']

💡返回一个参数的反向迭代器(可迭代对象)---reversed(可迭代对象)

👉会生成对应数据类型的迭代器,然后使用相应的转换操作符来取出迭代器中的内容

s = [1,2,5,8,0]
reversed(s) # 一个迭代器<list_reverseiterator at 0x1f27215f5b0>
list(reversed(s)) # [0, 8, 5, 2, 1]

(五)all() any()

1、any()

👉有一个为真就返回True

2、all()

👉全真,则返回True

print(any([False,1,0,None]))   
print(all([False,1,0,None]))

(六)enumerate()

💡返回一个枚举类型,主要是将可迭代对象中的每个元素及从0开始的序号共同组成一个二元组的列表

👉在函数中可以指定开始序号,enumerate(可迭代对象,开始序号)

seasons = ["Spring","Sunmmer","Fall","Winter"]
enumerate(seasons) # <enumerate at 0x1f27255f650>
list(enumerate(seasons)) # [(0, 'Spring'), (1, 'Sunmmer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons,10)) # [(10, 'Spring'), (11, 'Sunmmer'), (12, 'Fall'), (13, 'Winter')]

(七)zip()

💡创建一个聚合多个可迭代对象的迭代器

👉主要是将作为参数传入的多个可迭代对象的每个元素依次组合成元组,即第i个元组包含来自每个参数的第i个元素

👉在输出迭代器内容时,数据类型由根据类型转换操作符决定的,元素是元组类型的

x = [1,2,3]
y = [4,5,6]
zipped = zip(x,y)
list(zipped) # [(1, 4), (2, 5), (3, 6)]
tuple(zipped) # ((1, 4), (2, 5), (3, 6))
str(zipped) # '<zip object at 0x000001F271EB33C0>'

👉如果传入的参数长度不一致,以最短的参数为准或者导入itertools模块,使用zip_longest()函数,会在组合时自动为短的参数填充空值none

(八)map()

💡根据提供的函数对指定的可迭代对象的每个元素进行运算,并返回运算结果的迭代器

👉例子中根据给定的oed函数对字符串的字符依次进行计算,然后得到一个迭代器,对该迭代器进行数据转换

mapped = map(ord,"FishC")
list(mapped) # [70, 105, 115, 104, 67]

👉如果使用的函数是多个参数的,那么可迭代对象的数量也要对应增加

mapped = map(pow,[2,3,10],[5,2,3])
list(mapped) # [32, 9, 1000]

👉对于长短不一的可迭代对象,只能按照最短的来进行处理

list(map(max,[1,2,5],[2,2,2],[0,3,9,8])) # [2, 3, 9] 第三个参数的8是没有可比较的对象的

(九)filter() 过滤器

💡根据提供的函数对指定的可迭代对象的每个元素进行运算,并将结果为真的元素,以迭代器的形式返回

👉例子是过滤出小写字母

list(filter(str.islower,"FishC")) # ['i', 's', 'h']

三、迭代器 vs 可迭代对象

💡一个迭代器肯定是一个可迭代对象

👉迭代器是一次性的,可迭代对象可以重复使用

👉对于迭代器,只要对其进行相关数据操作,里面内容就会被取出,再次访问时就是空的

(一)iter() 

💡生成迭代器

x = [1,2,3,4,5]
y = iter(x) # y成为一个迭代器
type(x) # list
type(y) # list_iterator 列表迭代器

(二)next() 

next(y) # 1
next(y)
next(y)
next(y)
next(y) # 5
next(y) # 在将迭代器都输出结束后,会输出一个异常

💡可以给定默认输出的异常

z = iter(x)
next(z,"没啦")
next(z,"没啦")
next(z,"没啦")
next(z,"没啦")
next(z,"没啦")
next(z,"没啦") # 输出结束后会抛出给定的内容

 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

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

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

相关文章

Hazel游戏引擎(008-009)事件系统

文中若有代码、术语等错误&#xff0c;欢迎指正 文章目录 008、事件系统-设计009、事件系统-自定义事件前言自定义事件类与使用声明与定义类代码包含头文件使用事件 事件调度器代码 C知识&#xff1a;FunctionBind用法function基本使用 012、事件系统-DemoLayer用EventDispache…

7-3 sdut-oop-6 计算各种图形的周长(多态)

定义接口或类 Shape&#xff0c;定义求周长的方法length()。 定义如下类&#xff0c;实现接口Shape或父类Shape的方法。 &#xff08;1&#xff09;三角形类Triangle &#xff08;2&#xff09;长方形类Rectangle &#xff08;3&#xff09;圆形类Circle等。 定义测试类Shap…

QT基础教程之一创建Qt项目

QT基础教程1创建Qt项目 根据模板创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框&#xff0c;选择Qt Widgets Application 选择【Choose】按钮&#xff0c;弹出如下对话框 设置项目名称和路径&#xff0c;…

Cesium雷达追踪追踪(雷达探照效果)

Cesium雷达追踪追踪(圆锥体效果) 文章最后附有源码!!!!!!!!!!!!!!!!! 解析 第一步 、从gif图中可以看出,首先添加了两个运动的实体(在cesium entity与时间轴关联(添加运动轨迹))中有讲解 第二步、添加一个圆锥,修改圆锥朝向,来表示跟综照射效果,…

Windows安装MySQL及Python操作MySQL数据库脚本实例详解

1、Windows 上安装 MySQL 便于测试&#xff0c;笔者在 windows 上安装 MySQL&#xff0c;如有现成Linux下的MySQL和Python环境&#xff0c;也可直接使用。MySQL的官网下载链接安装步骤1)下载后的mysql-5.7.23-winx64.zip安装包解压至某一位置&#xff0c;在mysql-5.7.23-winx6…

Linux学习之用户管理useradd、userdel、passwd、usermod和chage

useradd 超级管理员root才能使用useradd 用户名添加用户&#xff0c;这条命令会新增一个用户&#xff0c;然后为新增用户在/home下新添一个用户名称相同的目录&#xff0c;在/var/spool/mail目录下添加一个用户名称相同的文件&#xff0c;而且还会在/etc/passwd、/etc/shadow和…

【Unity入门】25.入门结课Demo--神鸟大战怪兽

【Unity入门】入门结课Demo--神鸟大战怪兽 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 (一) 前言 经过了两个月的学习&#xff0c;我们也顺利的完成了入门课程&#xff0c;最后就用一个Demo作为我们的结课句号吧&am…

【夜深人静学数据结构与算法 | 第一篇】KMP算法

目录 前言&#xff1a; KMP算法简介&#xff1a; 引入概念&#xff1a; 前缀后缀 前缀表&#xff1a; 简单例子&#xff1a; 暴力遍历&#xff1a; KMP算法&#xff1a;​ KMP算法难点&#xff1a; 总结&#xff1a; 前言&#xff1a; 本篇我们将详细的从理论层面介绍一…

理解和创建Windows和Linux下的动态和静态库区别

一、引言 在计算机编程的世界中&#xff0c;库是一个非常重要的改变。它的出现提供了一种共享和重用代码的可能性&#xff0c;复杂的程序因为动态库的出现而变得简洁和方便。然而&#xff0c;库并不是单一的&#xff1a;它们可以是动态的&#xff0c;也可以是静态的&#xff0…

达梦数据库的下载与安装(Linux)

一、创建用户组 1、创建一个用户组和用户 添加分组 groupadd dinstall添加用户 useradd -g dinstall dmdba设置用户名和密码 echo "dameng123" | passwd --stdin dmdba查看操作系统中id为 dmdba 的用户的用户ID&#xff08;uid&#xff09;、组ID&#xff08;gi…

web漏洞-逻辑越权之水平垂直越权全解(33)

他是业务逻辑层面&#xff0c;和一些业务方便应用的安全问题&#xff0c;这个是因为代码层面没用考虑到的逻辑关系所造成的安全问题&#xff0c;越权是其中一个比较关键的问题。登录是指在登录这里出现了安全问题&#xff0c;业务等等今天只说越权。 越权漏洞 分为水平和垂直…

容器镜像按层分析工具dive

概述 dive是一个容器镜像分析工具&#xff0c;可以直观的看到容器每一层变动了哪些文件&#xff0c;每一层占用的磁盘空间&#xff0c;这样也就可以看到镜像的历史构建过程&#xff1b;同时也可以看到镜像的磁盘空间使用率&#xff0c;面对特别大的镜像文件是&#xff0c;可以…

【论文随笔】Rewrite-Based Decomposition of Signal Temporal Logic Specifications

文章目录 Overview1 IntroLTL任务分解STL任务分解本文工作 Background and Problem DefinitionSTLAgent假设与问题方法 An STL Rewriting SystemRewriting SystemFormula Rewrite DAG Decomposing STL智能体编队任务分解最优分解 Exploring the Formula Rewrite DAG心得体会 多…

如何创建可引导的 macOS 安装介质

如何创建可引导的 macOS 安装介质 如何创建可引导的 macOS 安装器 | 如何制作 macOS USB 启动盘 请访问原文链接&#xff1a;https://sysin.org/blog/macos-createinstallmedia/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.or…

asp.net卷烟物价管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net卷烟物价管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 asp.net卷烟物价管理系统VS开发sq…

清华青年AI自强作业hw3_2:前向传播和反向传播实战

清华青年AI自强作业hw3_2&#xff1a;前向传播和反向传播实战 实现过程各层参数维度分析拟合结果相关链接 一起学AI系列博客&#xff1a;目录索引 前向传播和反向传播的公式理解化用于作业hw3_2中&#xff1a;&#xff1a;用NN网络拟合小姐姐喜好分类 完成前向传播、反向传播算…

【JavaEE进阶之Spring】一分钟让你学会什么是Spring以及如何使用创建Spring

前言&#xff1a; &#x1f49e;&#x1f49e;今天我们正式进入到JavaEE进阶的学习中了&#xff0c;在JavaEE进阶的学习中&#xff0c;我们最主要的就是学习Spring框架。 &#x1f49f;&#x1f49f;那我们从今天就要逐渐从最基础的Spring开始&#xff0c;教会大家什么是Spring…

54、基于51单片机饮水机温度水位控制无线蓝牙APP控制报警系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+元器件清单等)

方案的选择 方案一&#xff1a;采用51单片机作为控制核心&#xff0c;配合无线蓝牙模块、水温加热模块继电器开关、基于Dallas单线数字式的DS18B20温度传感器模块、蜂鸣器报警模块、按键模块、LCD1602液晶显示器模块、晶振电路模块、复位电路模块以及电源模块为一体构成无线水…

winsw使用——将Nginx和Jar包注册到WIN服务

文章目录 1.winsw介绍2.注册Nginx到win服务2.1 首先将下载的winsw下并改名2.2 nginx-service.exe.config配置2.3 nginx-service.xml配置2.4 nginx-service安装到服务 3.注册Jar包到win服务3.1 复制winsw文件并改名3.2 创建xml配置文件3.3 执行安装命令 1.winsw介绍 Windows Se…

ChatGPT Prompt Engineering for Developers from DeepLearning.AI

链接&#xff1a;https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/1/introduction In this course, there are some example codes that you can already run in Jupyter Notebook. Below, I will write down the core knowledge points (how to build a prompt and…