当前位置: 首页 > news >正文

Phthon3 学习记录-0707

零碎的知识点1
if not nums:return 0

在 Python 中,if not nums: 这行代码用于检查变量 nums 是否为 “空值” 或 “假值”。以下是详细解释:

  1. Python 中的真值和假值

    • 在 Python 中,许多对象在布尔上下文中可以被解释为 True 或 False。一些常见的假值包括:
      • False 本身(布尔类型)。
      • None(表示空值)。
      • 数值类型中的 0(包括整数 0、浮点数 0.0 等)。
      • 空序列,如空字符串 ''、空列表 []、空元组 ()、空集合 set() 以及空字典 {}
    • 除了上述假值之外的其他对象,在布尔上下文中通常被解释为 True
  2. if not nums: 的含义

    • not 是 Python 中的逻辑非运算符,它会对操作数的布尔值取反。例如,如果操作数在布尔上下文中为 Truenot 操作后结果为 False;如果操作数为 Falsenot 操作后结果为 True
    • 在 if not nums: 中,首先会判断 nums 在布尔上下文中的值。如果 nums 是一个空列表(因为题目中 nums 是列表),它在布尔上下文中的值为 False,那么 not nums 的值就为 Trueif 语句块中的代码 return 0 就会被执行。这意味着如果传入的列表 nums 为空,函数直接返回 0,因为空列表中没有元素,去重后的长度自然为 0
    • 如果 nums 不是空列表,它在布尔上下文中的值为 Truenot nums 的值就为 Falseif 语句块中的代码不会执行,程序会继续执行 if 语句块之后的代码,即执行后续的去重逻辑。

例如:

nums1 =[]if not nums1:print('这是一个空列表')nums2 = [1, 2, 3]
if not nums2:print('这应该不会被打印')

在上述代码中,nums1 是空列表,if not nums1: 条件成立,会打印 这是一个空列表;而 nums2 不是空列表,if not nums2: 条件不成立,不会打印 这应该不会被打印

零碎的知识点2

 pop() 函数的详细介绍

list.pop([index])
  • index 是可选参数。如果不提供 indexpop() 会移除并返回列表的最后一个元素。如果提供了 index,则移除并返回指定位置的元素。

示例

1.不指定索引

my_list = [1, 2, 3, 4, 5]
popped_item = my_list.pop()
print(popped_item)  
print(my_list)  

在上述代码中:

  • 首先定义了一个列表 my_list
  • 调用 my_list.pop() 时没有指定索引,它会移除并返回列表的最后一个元素 5,并将其赋值给 popped_item
  • 然后打印 popped_item,输出 5
  • 再打印 my_list,此时列表变为 [1, 2, 3, 4],因为最后一个元素已被移除。

2.指定索引

my_list = [1, 2, 3, 4, 5]
popped_item = my_list.pop(2)
print(popped_item)  
print(my_list)  

在这段代码里: 同样定义了 my_list 列表。 调用 my_list.pop(2),这里指定索引为 2,它会移除并返回索引为 2 的元素,即 3,并赋值给 popped_item。 打印 popped_item,输出 3。 打印 my_list,此时列表变为 [1, 2, 4, 5],索引为 2 的元素已被移除。

stack.append(i)

在 Python 中,stack.append(i) 是列表(这里用 stack 表示这个列表,模拟栈数据结构)的一个方法调用。它的作用是将元素 i 添加到列表 stack 的末尾。 结合你之前判断括号匹配的代码来看:

class Solution:def isValid(self, s: str) -> bool:dic = {')':'(',']':'[','}':'{'}stack = []for i in s:if stack and i in dic:if stack[-1] == dic[i]:stack.pop()else:return Falseelse:stack.append(i)return not stack

在这个代码的循环中,stack.append(i) 主要用于处理左括号。当遍历字符串 s 中的字符 i 时,如果 i 不是右括号(或者栈为空),就将 i 添加到 stack 列表的末尾。由于这里把 stack 当作栈来使用,append(i) 操作就相当于将左括号压入栈中。这样,后续遇到右括号时,可以从栈顶取出相应的左括号进行匹配检查。 例如,假设字符串 s = "([{)]",当遍历到第一个字符 ( 时,因为它是左括号,所以通过 stack.append(i) 将 ( 压入栈 stack,此时 stack = ['(']。当遍历到 [ 时,同样将 [ 压入栈,stack = ['(', '[']。后续遇到右括号时,就会从栈顶取出元素进行匹配判断。


文章转载自:

http://fM3tfkJk.tpnxj.cn
http://KnXvgU0s.tpnxj.cn
http://W5ZflpLl.tpnxj.cn
http://hSkpgu0K.tpnxj.cn
http://6NXjRLMe.tpnxj.cn
http://WaGxt7Am.tpnxj.cn
http://7h8b4KFW.tpnxj.cn
http://HhAWYrU9.tpnxj.cn
http://8mHM7mCM.tpnxj.cn
http://xuSoxc5P.tpnxj.cn
http://wiwLnObe.tpnxj.cn
http://7KPQcp0f.tpnxj.cn
http://ZV0Lemqi.tpnxj.cn
http://tTLfxE2H.tpnxj.cn
http://SsOq0EbV.tpnxj.cn
http://neQDq9fU.tpnxj.cn
http://qgpsCioo.tpnxj.cn
http://MGIuLD5S.tpnxj.cn
http://WF7AMVWE.tpnxj.cn
http://HmAAwjpn.tpnxj.cn
http://mdtCPln1.tpnxj.cn
http://r798NNvw.tpnxj.cn
http://iiNepK9g.tpnxj.cn
http://CpbXiEaY.tpnxj.cn
http://UmCS20Kh.tpnxj.cn
http://h4wKwVtd.tpnxj.cn
http://JtYDDdmL.tpnxj.cn
http://zSXQCzt8.tpnxj.cn
http://Iz4OnDQE.tpnxj.cn
http://YH3OqDHT.tpnxj.cn
http://www.dtcms.com/a/371129.html

相关文章:

  • 嵌入式学习笔记--Linux系统编程阶段--DAY07进程间通信--存储映射和共享内存
  • DMA寄存器学习
  • 对于单链表相关经典算法题:206. 反转链表及876. 链表的中间结点的解析
  • 云原生部署_k8s入门
  • 分布式数据库的历史演变与核心原理
  • 线代:排列与逆序
  • GPIO的配置中开漏输出与推挽输出的差别
  • 有有有深度学习
  • 车载通信架构 --- DoIP企业规范中细节有哪些?
  • 【Linux基础】Linux系统管理:GPT分区实践详细操作指南
  • 6-2-4 解决第一次发送失败
  • 跨域彻底讲透
  • c++之基础B(x转10进制,含十六进制)(第四课)
  • 自注意力机制解析
  • 数据结构——队列(Java)
  • Dify 从入门到精通(第 79/100 篇):Dify 的多模态模型评估(高级篇)
  • 具身导航“所想即所见”!VISTA:基于生成式视觉想象的视觉语言导航
  • synchronized 锁升级
  • 深入解析 Java 的类加载机制
  • GEE:时间序列合成一个不填补空洞,保留时间序列空像素的新影像
  • Zoom AI 技术架构研究:联合式方法与多模态集成
  • Arch Linux运维自动更新脚本推荐
  • 深度拆解OpenHarmony NFC服务:从开关到卡模拟掌握近场通信技术
  • 第5章递归:分治法
  • 【Python字符串格式化】:全面指南与最佳实践
  • MySQL学习记录-索引
  • C++进阶——继承(2)
  • Oracle体系结构-Redo Log Buffer详解
  • 【医学影像 AI】YoloCurvSeg:仅需标注一个带噪骨架即可实现血管状曲线结构分割
  • Nginx安装及版本迭代热部署详解