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

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://www.xdnf.cn/news/20540.html

相关文章:

  • 积分球的使用——简易版
  • 强化学习入门:从零开始实现DDQN
  • Ai8051 2.4寸320*240 ILI9341 I8080接口驱动
  • 人工智能学习:基于seq2seq模型架构实现翻译
  • 项目初始化上传git
  • Qemu-NUC980(四):SDRAM Interface Controller
  • 什么是“二合一矫平机”?——一篇技术科普
  • 主流的开源协议(MIT,Apache,GPL v2/v3)
  • Qt编程之信号与槽
  • 吴恩达机器学习(八)
  • make时设置链接器选项的2种方法
  • 【操作系统-Day 25】死锁 (Deadlock):揭秘多线程编程的“终极杀手”
  • Zoom AI 技术架构研究:联合式方法与多模态集成
  • 【LeetCode热题100道笔记】翻转二叉树
  • python炒股
  • C++ 20 新增特性以及代码示例
  • 同态加密库(Google FHE)
  • 神经网络的初始化:权重与偏置的数学策略
  • C# WinForm分页控件实现与使用详解
  • B.50.10.09-RPC核心原理与电商应用
  • MATLAB R2025a安装配置及使用教程(超详细保姆级教程)
  • 什么是云手机?
  • Vue3 - Echarts自定义主题引入(Error:ECharts is not Loaded,Error:default ,Error:module)
  • 攻击服务器的方式有哪些,对应的应对策略有哪些?
  • 联邦学习论文分享:Towards Building the Federated GPT:Federated Instruction Tuning
  • Leetcode hot100 最长连续序列
  • rh134第五章复习总结
  • SDRAM详细分析-08 数据手册解读
  • AI + 办公工具 = 应用案例
  • (论文速读)视觉语言模型评价中具有挑战性的选择题的自动生成