Py_tricks
.pop(self,index)方法
| |
函数传实参还是形参问题
在 Python 中,参数传递始终是 引用传递(传地址的)。但根据对象类型(可变/不可变)的不同,会产生类似「值传递」或「引用传递」的表象:
结论:看对象类型
- 不可变对象(字符串、数字、元组等)作为参数时:
- 形参接收到的是对象的引用
- 若在函数内修改形参,会创建新对象,实参不受影响(类似值传递)
- nonlocal声明实现访问外部变量?
- 可变对象(列表、字典、集合等)作为参数时:
- 形参接收到的也是对象的引用
- 若在函数内 原地修改 形参(如
append、+=等操作),实参会同步变化(类似引用传递)
| |
pychram 来回查看代码
pycharm会用ctrl+鼠标左键点击函数来进入函数体查看函数具体实现部分。但是我常常点击后就回不来了,不同文件的函数调用来回找让人头大。
可以来回的方法是:
ctrl+alt+左方向键(←) 后退(回退回原来位置, 不行就多摁几次,因为光标点击的地方好像也会记录)
ctrl+alt+右方向键(→) 前进(即回到刚才点击的函数位置)
参考链接:https://blog.csdn.net/shmily_ke/article/details/136975710
for _ in range(len(queue))
下划线 ‘_’:_ 是一个占位符,表示“我不关心这个索引值”
len(queue)忽略循环中queue本身的变化
| 特性 | for _ in range(len(queue)) | for _ in queue |
|---|---|---|
| 遍历方式 | 基于索引,范围固定 | 动态跟踪变化 |
q 增加元素 | 不会遍历到新添加的元素 | 可能会遍历到新添加的元素 |
**q 删除元素 ** | 可能导致索引越界 | 可能导致跳过元素或提前结束 |
103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode)
对比我的代码和题解代码如下:
我的还要用cnt记录下一层的结点个数,它只需要for _ in range(len(queue))中的len(queue)就能保留一层的值然后循环。
| |
部分 可迭代型数据 逆序
- list.reverse()
- reversed(iterable)
- list[::-1]——需要对象有__getitem__,最好用
| 特性 | reverse() | reversed() | [::-1] |
|---|---|---|---|
| 功能 | 原地反转列表 | 返回反转后的迭代器 | 返回反转后的新对象 |
| 适用对象 | 仅列表(list) | 所有可迭代对象(列表、元组、字符串等) | 所有支持切片的有序序列(列表、字符串、元组等) |
| 返回值 | None | 迭代器 | 反转后的新对象 |
| 内存效率 | 高(原地操作,不生成新对象) | 高(返回迭代器,不生成完整副本) | 低(生成完整副本,占用额外内存) |
| 时间复杂度 | O(n)(直接交换元素) | O(1)(延迟计算,实际遍历时 O(n)) | O(n)(复制所有元素) |
| 修改原数据 | ✅ 是 | ❌ 否 | ❌ 否 |
| 支持链式操作 | ❌ 否(返回 None) | ✅ 是(可与 list()、join() 等结合) | ✅ 是(直接生成新对象) |
for key in dic_1 if key in dic_2
| |
声明多个全局变量
逗号 隔开,“ \ ”连接下一行
| |
字典
.join方法
| |
dataclasses
dataclasses 的 dataclass, field
pycharm书签功能
按 F11 对光标那行生成书签
pycharm关警告
- 右上角有 黄色三角形警告图标⚠
- 直接鼠标放置⚠处
- 会自动显示 如 “ 25个警告,3个弱警告 高亮显示:所有问题 ”
- 点击 高亮显示:所有问题
- 弹出“无 语法 所有问题”,点击 无 即可。
func(*args,**kwargs)
函数定义中,可以有一个 *args 和 一个 **kwargs 参数,args 和 kwargs 是约定俗成的参数命名。也就是说可以func(*a,**b)
我的理解:
- args是一个元组,*args是解包,即 未知元组(a,b…) 解包成 a,b… 放到func的括号里,变成 func(a,b…)
- kwargs是一个字典未知字典{a: b, c: d…},解包放func里,变成 func(a=b, c=d…)
使用式理解:
*func(fixed_arg, args, obvious_kwarg=123, **kwargs)中
fixed_arg传递:它是固定位置参数,没有默认值。*args接收所有多余的位置参数:所有未被fixed_arg接收的位置参数都会被打包到*args。obvious_kwarg是仅限关键字参数:它只能通过关键字传递,不能通过位置传递。**kwargs接收所有多余的关键字参数:所有未被fixed_arg、*args和obvious接收的关键字参数都会被打包到**kwargs。
| |
[a:b]不包含第b个元素
[a:b]不包含第b个元素,没了
题目:填空,s是个str,长度>1,获取其前缀,如"123 -> 1 12 123"
s_arr=[s[ __ ] for i in range( ___ )]
| |
from collections import defaultdict
直译 —— 有默认的 值 的字典
| |
.extend
对比.extend和.append
| |
pycharm折叠、展开
折叠所有代码 Ctrl Shift -
展开所有代码 Ctrl Shift +
折叠光标所在层所有可折叠代码(truncate) Ctrl Alt -
展开光标所在层所有可折叠代码(truncate) Ctrl Alt +
折叠光标所在层 Ctrl -
开光标所在层 Ctrl +
提示词工程代码例子
| |
pycharm一直显示正在关闭项目
pycharm关闭后一直显示正在关闭项目的解决方法-CSDN博客
生成当前环境配置的txt
| |
@cache
problem: 试图在类方法 combinationSum4 前加@cache,报错。
explanation:@cache 试图将 combinationSum4 的所有参数 (self, nums, target) 打包成一个元组 (self_object, [1,2,3], 4) 来作为缓存字典的key,但是list不可哈希。
solution:将 @cache 应用在参数简单且可哈希的递归辅助函数上。
| |