bool、python集合
目录
1、使用bool判断某一数据类型是否为空
2、Python集合(数组)
1、列表
2、元组
3、集合
4、字典
1、使用bool判断某一数据类型是否为空
如果有某种内容,则几乎所有值都将评估为 True。
除空字符串外,任何字符串均为 True。
除 0 外,任何数字均为 True。
除空列表外,任何列表、元组、集合和字典均为 True。
实际上,除空值(例如 ()、[]、{}、""、数字 0 和值 None)外,没有多少值会被评估为 False。当
然,值 False 的计算结果为 False。
print(bool()); # false
print(bool(0)) # false
print(bool("")) # 空字符串,false
print(bool("abc")) # true
print(bool(123)) # true
print(bool(["apple", "cherry", "banana"])) # true
bool(False) # false
bool(None) # false
bool(()) # false
bool([]) # false
bool({}) # false
所以要是判断字符串是否为空,还可以使用bool类型进行判断?当然可以,而不必使用len(x)进行判断。
2、Python集合
Python 编程语言中有四种集合数据类型:
- 列表(List)是一种有序、有索引、可更改的集合。允许重复的成员。
- 元组(Tuple)是一种有序、有索引、不可更改的集合。允许重复的成员。
- 词典(Dictionary)是一个无序、有索引、可更改的集合。没有重复的成员
- 集合(Set)是一个无序、无索引、可更改的集合。没有重复的成员。
- 如果四种集合类型有索引,那么可以根据索引进行数据修改、返回索引号对应的值或者对集合进行切片操作
- 可更改和不可更改体现在对四种集合数据类型是否可以使用内建方法进行增、删、改、查等操作
- 虽然元组是不可变的,但是元组可以包含可变对象,比如一个元组中可以包含一个列表。虽然元组本身不可以修改,但是列表中的元素是可以修改的
- 有序的数据类型可以按照固定的顺序进行排序,而无序的数据类型没有固定的顺序,因此无法进行排序。无序的数据类型也不能直接比较大小,因为它没有固定的顺序。 使用排序算法对无序数据类型进行排序,需要将其转换为有序数据类型,如将无序集合转换为有序列表,然后对列表进行排序。但是这种方法只是对整个数据类型进行排序,而不是对其中的每个元素进行排序。 需要注意的是,有些数据类型虽然是有序的,但是不能进行排序,如 Python 中的元组。元组中的元素虽然有固定的顺序,但是由于元组中的元素类型可以是不同的,因此无法进行排序
1、列表(数组)
说白了就是其他语言中的数组,只不过python中的这个数组功能太强大
#———————————负索引表示从末尾开始,-1 表示最后一个项目,-2 表示倒数第二个项目,依此类推。thislist = ["apple", "banana", "cherry"]print(thislist[-1]) # 打印cherry#———————————此例将返回从索引 -4(包括)到索引 -1(排除)的项目thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]print(thislist[-4:-1]) # ['orange', 'kiwi', 'melon']#———————————使用正向索引对列表进行切片操作,返回一个新的列表thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]# 正向索引切片操作时和字符串一样,不包括最后一个索引位置的数据print(thislist[2:5]) # ['cherry', 'orange', 'kiwi']#———————————使用索引号修改列表中对应位置中的数据thislist = ["apple", "banana", "cherry"]thislist[1] = "mango"print(thislist) # ['apple', 'mango', 'cherry']#———————————使用 in 检查列表中是否有该数据thislist = ["apple", "banana", "cherry"]if "apple" in thislist:print("Yes, 'apple' is in the fruits list")#———————————使用len(x)返回当前列表中的数据长度thislist = ["apple", "banana", "cherry"]print(len(thislist)) # 3#———————————使用循环的方法把 list2 追加到 list1 的末尾中list1 = ["a", "b" , "c"]list2 = [1, 2, 3]for x in list2:list1.append(x) print(list1) # ['a', 'b', 'c', 1, 2, 3]#———————————当然还可以使用extend() 方法将 list2 添加到 list1 的末尾list1.extend(list2)print(list1) # ['a', 'b', 'c', 1, 2, 3]#———————————使用list() 构造函数创建列表thislist = list(("apple", "banana", "cherry"))print(thislist) #['apple', 'banana', 'cherry']
列表中常使用的内建方法如下表,直接使用 变量名.方法调用即可
append() | 在列表的末尾添加一个元素 |
clear() | 删除列表中的所有元素 |
copy() | 返回列表的副本 |
count() | 返回具有指定值的元素数量。 |
extend() | 将列表元素(或任何可迭代的元素)添加到当前列表的末尾 |
index() | 返回具有指定值的第一个元素的索引 |
insert() | 在指定位置添加元素 |
pop() | 删除指定位置的元素 |
remove() | 删除具有指定值的项目 |
reverse() | 颠倒列表的顺序 |
sort() | 对列表进行排序 |
2、元组
元组和列表的操作基本一样,根据索引号取值、使用正负索引号对元组进行切片操作并返回一个新的元组、使用len(x)返回元组中数据的长度、使用in判断是否存在某一数据都可行。但是唯一不同的是由于元组是一个不可更改的集合,所以凡事想要修改元组的操作是不可行的。
并且,虽然元组是不可更改的,但是可以完全删除元组
thistuple = ("apple", "banana", "cherry")del thistuple # 删除元组,列表等其他集合数据类型都可以使用print(thistuple) # 这会引发错误,因为元组已不存在
使用 + 运算符 合并两个元组(返回的是一个新元组,并没有对之前的元组做出修改)
tuple1 = ("a", "b" , "c")tuple2 = (1, 2, 3)tuple3 = tuple1 + tuple2print(tuple3) # 打印('a', 'b', 'c', 1, 2, 3)
由于元组中的数据是不可更改的,所以在元组中必然不存在增、删、改、查等操作。只有下面两种
count() | 返回元组中指定值出现的次数。 |
index() | 在元组中搜索指定的值并返回它被找到的位置。 |
3、集合
在 Python 中,集合用花括号编写
由于没有索引的特性,所以不能进行切片操作或者根据索引值返回对应数据
但是可以使用使用for循环遍历取值
thisset = {"apple", "banana", "cherry"}for x in thisset:print(x)
可以判断集合中是否存在某一元素值
thisset = {"apple", "banana", "cherry"}print("banana" in thisset)
下面是集合中常用的内建方法
add() | 向集合添加元素。 |
clear() | 删除集合中的所有元素。 |
copy() | 返回集合的副本。 |
difference() | 返回包含两个或更多集合之间差异的集合。 |
difference_update() | 删除此集合中也包含在另一个指定集合中的项目。 |
discard() | 删除指定项目。 |
intersection() | 返回为两个其他集合的交集的集合。 |
intersection_update() | 删除此集合中不存在于其他指定集合中的项目。 |
isdisjoint() | 返回两个集合是否有交集。 |
issubset() | 返回另一个集合是否包含此集合。 |
issuperset() | 返回此集合是否包含另一个集合。 |
pop() | 从集合中删除一个元素。 |
remove() | 删除指定元素。 |
symmetric_difference() | 返回具有两组集合的对称差集的集合。 |
symmetric_difference_update() | 插入此集合和另一个集合的对称差集。 |
union() | 返回包含集合并集的集合。 |
update() |
4、字典
字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。
#————————————————创建并打印字典thisdict = {"brand": "Porsche","model": "911","year": 1963
}
print(thisdict) # {'brand': 'Porsche', 'model': '911', 'year': 1963}#————————————————获取 "model" 键的值x = thisdict["model"]x = thisdict.get("model") # 911#————————————————把 "year" 改为 2019thisdict["year"] = 2019print(thisdict) #{'brand': 'Porsche', 'model': '911', 'year': 2019}#————————————————逐个打印字典中的所有键名for x in thisdict:print(x) #brand 、model、year#————————————————逐个打印字典中的所有值for x in thisdict:print(thisdict[x]) # Porsche、911、1963#————————————————还可以使用 values() 函数返回字典的值for x in thisdict.values():print(x) # Porsche、911、1963#————————————————通过使用 items() 函数遍历键和值for x, y in thisdict.items():print(x, y)# brand Porsche
# model 911
# year 1963
还有使用in判断是否存在某一键值对、使用len(x)判断词典的长度等方法
通过使用新的索引键并为其赋值,可以将项目添加到字典中
# 通过使用新的索引键并为其赋值,可以将项目添加到字典中
thisdict = {"brand": "Porsche","model": "911","year": 1963
}
thisdict["color"] = "red"
print(thisdict) # {'brand': 'Porsche', 'model': '911', 'year': 1963, 'color': 'red'}
del
关键字删除具有指定键名的项目(使用del thisdict也可以完全删除字典)
thisdict = {"brand": "Porsche","model": "911","year": 1963
}
del thisdict["model"]
print(thisdict) # {'brand': 'Porsche', 'year': 1963}
词典也可以包含许多词典,这被称为嵌套词典(套娃的形式),有点类似于C中的结构体嵌套
child1 = {"name" : "Phoebe Adele","year" : 2002
}
child2 = {"name" : "Jennifer Katharine","year" : 1996
}
child3 = {"name" : "Rory John","year" : 1999
}myfamily = {"child1" : child1,"child2" : child2,"child3" : child3
}print(myfamily)
C:\Users\My Name>python python_dictionary_nested_2.py
{'child1': {'name': 'Phoebe Adele', 'year': 2002}, 'child2': {'name': 'Jennifer Katharine', 'year': 1996}, 'child3': {'name': 'Rory John', 'year': 1999}}
也可以使用 dict()
构造函数创建新的字典
thisdict = dict(brand="Porsche", model="911", year=1963)
# 请注意,关键字不是字符串字面量
# 请注意,使用了等号而不是冒号来赋值
print(thisdict)
下面是词典中常用的内建方法
clear() | 删除字典中的所有元素 |
copy() | 返回字典的副本 |
fromkeys() | 返回拥有指定键和值的字典 |
get() | 返回指定键的值 |
items() | 返回包含每个键值对的元组的列表 |
keys() | 返回包含字典键的列表 |
pop() | 删除拥有指定键的元素 |
popitem() | 删除最后插入的键值对 |
setdefault() | 返回指定键的值。如果该键不存在,则插入具有指定值的键。 |
update() | 使用指定的键值对字典进行更新 |
values() |
相关文章:
bool、python集合
目录 1、使用bool判断某一数据类型是否为空 2、Python集合(数组) 1、列表 2、元组 3、集合 4、字典 1、使用bool判断某一数据类型是否为空 如果有某种内容,则几乎所有值都将评估为 True。 除空字符串外,任何字符串均为 Tr…...

从零开始学架构——可扩展架构模式
可扩展架构模式的基本思想和模式 软件系统与硬件和建筑系统最大的差异在于软件是可扩展的,一个硬件生产出来后就不会再进行改变、一个建筑完工后也不会再改变其整体结构 例如,一颗 CPU 生产出来后装到一台 PC 机上,不会再返回工厂进行加工以…...
Day03 01-MySQL数据完整性详解
文章目录 第七章 数据完整性7.1 完整性约束7.2 实体完整性7.2.1 唯一约束7.2.2 主键约束7.2.3 自增约束 7.3 域完整性7.3.1 非空约束7.3.2 默认值约束7.3.3 检查约束 7.4 引用完整性 第七章 数据完整性 7.1 完整性约束 我们已经知道了如何创建数据库、如何创建表、如何在表中…...

DJ 5-4 以太网 Ethernet
目录 一、以太网的物理拓扑结构 二、以太网物理层标准 1、以太网技术:10Base-T 和 100Base-T 2、以太网技术:1000Base 系列 3、曼彻斯特编码* 4、差分曼彻斯特编码机制* 三、以太网链路层控制技术 四、以太网的帧结构 1、前同步码 2、MAC 地址…...

华为OD机试真题 Java 实现【区块链文件转储系统】【2023Q2 200分】
一、题目描述 区块链底层存储是一个链式文件系统,由顺序的N个文件组成,每个文件的大小不一,依次为F1,F2…Fn。 随着时间的推移,所占存储会越来越大。 云平台考虑将区块链按文件转储到廉价的SATA盘,只有连续的区块链…...
Java 实现 二叉树的 后序遍历
1、定义节点类 class Node {int val;Node left;Node right;Node(int val) {this.val val;} }public class BinaryTree {/*** 后序遍历* param root 节点*/public void postorderTraversal(Node root) {if (root ! null) {postorderTraversal(root.left);postorderTraversal(r…...
rk3588安装qt虚拟键盘
qt是默认安装的,版本号为5.12.8,但是没有虚拟键盘模块,项目中需要,就采用源码编译的方法执行 下载源码 源码地址为Index of /archive/qt/5.12/5.12.1/submodules,下载后放到3588中解压cd到src路径,运行一下命令 …...

HCIP-RIP双向重发布综合实验
拓扑结构: 要求: 1、两个协议间进行多点双向重发布 2、R7的环回没有宣告在OSPF协议中,而是在后期重发布进入的 3、解决环路,所有路径选择最优,且存在备份 4、R2的环回要在RIP中宣告,R3的环回要在OSPF中宣…...
Flask的使用例子
以下是一个简单的使用Flask创建Web应用程序的示例: from flask import Flask, render_template, requestapp Flask(__name__)app.route(/) def home():return Hello, World!app.route(/about) def about():return render_template(about.html)app.route(/submit, …...

【基础6】存储过程的 创建与调用
目录 什么是存储过程 用户自定义存储过程 练习 什么是存储过程 什么是存储过程 类似于C语言中的函数。用来执行管理任务或应用复杂的业务规则存储过程可以带参数,也可以返回结果存储过程可以包含数据操纵等语句、变量、逻辑控制语句等。(单个select语…...

如何快速实现接口自动化测试,常规接口断言封装实践
目录 前言: 一、框架设计思路 1. 封装请求方法 2. 断言封装 3. 接口封装 4. 接口统一管理 二、框架使用 三、总结 前言: 在当今互联网行业中,接口自动化测试已经成为了非常重要的测试手段之一。而在这个过程中,接口自动化…...

java+nodejs+vue+python+php家教信息管理系统
任何网友都可以自由地查看、搜索、发布该家教信息平台的信息。该平台是区别于传统的家教中介的服务平台。学生可以免费查看网站上的家教信息,挑选适合自己的家教;教师可以免费查看网站上的需求信息,挑选适合自己的学生;学生可以发…...

课程分享:鸿蒙HarmonyOS系统及物联网开发实战课程(附课程视频及源码下载)
课程名称: 鸿蒙HarmonyOS系统及物联网开发实战课程 课程介绍: HarmonyOS 是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS 提出了基于同一套系统能力、适配多种终端形态的分布式理念,…...

【数据结构】线性表之栈、队列
前言 前面两篇文章讲述了关于线性表中的顺序表与链表,这篇文章继续讲述线性表中的栈和队列。 这里讲述的两种线性表与前面的线性表不同,只允许在一端入数据,一段出数据,详细内容请看下面的文章。 顺序表与链表两篇文章的链接&…...
StringUtils.substring\[XX]()字符串截取方法总结
StringUtils.substring[XX]()字符串截取方法总结 StringUtils (Apache Commons Lang 3.12.0 API) 文章目录 StringUtils.substring\[XX]()字符串截取方法总结导入依赖方法介绍substring(String str, int start)substring(String str, int start, int end)substringAfter(String…...

SeaweedFs使用-通过http接口实现文件操作
通过http接口实现文件操作 SeaweedFs可通过filer的http接口/master中的http接口来进行文件上传 1.通过master的接口进行上传文件 通过各种方式进行请求接口:http://localhost:9333/submit, ip和端口号是master服务的信息。此接口通过post请求方式将文件的二进制流…...

成绩管理系统
系列文章 任务28 成绩管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试读入数据浏览全部信息增加学生信息保存数据删除学生信息修改学生…...

【MYSQL】事务的4大属性,对隔离级别的详细讲解
目录 1.原子性和持久性 1.1.手动提交事务 1.2.自动提交事务 1.3.事务的原理: 2.隔离性 1.读未提交(Read Uncommitted) 2.读提交(Read Committed) 3.可重复读 4.串行化 3.一致性 4.理解读提交和可重复读的实现…...

如何在宝塔面板后的阿里云服务器运行Flask项目并公网可以访问?
在你的服务器安装宝塔面板 宝塔面板是服务器运维管理系统 使用宝塔前: 手工输入命令安装各类软件,操作起来费时费力并且容易出错,而且需要记住很多Linux的命令,非常复杂。 使用宝塔后: 2分钟装好面板,一键…...
HTTP(九)-- response对象 -- 向页面响应数据
目录 1. 服务器输出字符数据到浏览器 1.1 获取字符输出流 1.2 实例演示:...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...