实用指南: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 False
else:
stack.append(i)
return not stack

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

posted @ 2025-09-24 20:23  ycfenxi  阅读(9)  评论(0)    收藏  举报