实用指南:Phthon3 学习记录-0707
零碎的知识点1
if not nums:
return 0
在 Python 中,if not nums: 这行代码用于检查变量 nums 是否为 “空值” 或 “假值”。以下是详细解释:
Python 中的真值和假值:
- 在 Python 中,许多对象在布尔上下文中可以被解释为
True或False。一些常见的假值包括:False本身(布尔类型)。None(表示空值)。- 数值类型中的
0(包括整数0、浮点数0.0等)。 - 空序列,如空字符串
''、空列表[]、空元组()、空集合set()以及空字典{}。
- 除了上述假值之外的其他对象,在布尔上下文中通常被解释为
True。
- 在 Python 中,许多对象在布尔上下文中可以被解释为
if not nums:的含义:not是 Python 中的逻辑非运算符,它会对操作数的布尔值取反。例如,如果操作数在布尔上下文中为True,not操作后结果为False;如果操作数为False,not操作后结果为True。- 在
if not nums:中,首先会判断nums在布尔上下文中的值。如果nums是一个空列表(因为题目中nums是列表),它在布尔上下文中的值为False,那么not nums的值就为True,if语句块中的代码return 0就会被执行。这意味着如果传入的列表nums为空,函数直接返回0,因为空列表中没有元素,去重后的长度自然为0。 - 如果
nums不是空列表,它在布尔上下文中的值为True,not nums的值就为False,if语句块中的代码不会执行,程序会继续执行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是可选参数。如果不提供index,pop()会移除并返回列表的最后一个元素。如果提供了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 = ['(', '[']。后续遇到右括号时,就会从栈顶取出元素进行匹配判断。
浙公网安备 33010602011771号