Python 小技巧(常更新)

1. 在test 文件夹下,有一个 test.py文件,这其中调用到了 commonroad_qp_planner文件夹里的一个模块(.py文件)。直接在test 文件下打开终端运行 python test.py,会报错。

解决:在test.py 中 补上

        import sys
        sys.path.append("..")

为了调用上一级目录下的模块。

2. Unittest 单元测试,是用来测试代码的结果是否正确的,参考https://zhuanlan.zhihu.com/p/55093566

简单来说,在一个以test开头的函数中,写入 [运行自己写的代码 得到result] 和 [一个expect_result]

self.assertEqual(result,expect_result), 看它是否会报错。

另外,执行

if __name__ == '__main__':
    unittest.main()   会
执行当前类中所有以test开头的方法来直接运行,而不必再专门对TestCalculator进行实例化。

3. 删除一个List中的重复元素,并保留本身的顺序 得到mylist: mylist = sorted(set(List), key=List.index) 

4. 把一个List排序,可以用sort函数。可以设定key,来设定排序的顺序。当有多个key的时候,可以把 多个条件用[],来表示 :

5. Sort和sorted的区别就是: sort是在已有的list的上,进行排序操作,List_A.sort(), 原来的List_A就没有了。如果想保存List_A, 新建一个List_B来存排序后的list, 可以用sorted. List_B = sorted(List_A) 

6. Python想调试第三方的包的源代码,但是在PyCharm里面debug模式下,进不去源码。这时候我们可以使用python自带的包 

import pdb   # 在源文件中导入这个包

pdb.set_trace()   # 在源文件你想要的地方加上这一句。保存。

在你run或者debug时,程序会停在这里,这时候,你可以在console里面查看各个变量的大小。

用下面的命令,来单步执行 

命令                作用
ccontinue执行程序,遇到下一个pdb.set_trace(),依然会停
n执行next行
r执行函数,从当前函数返回
s进入函数

7. python中也有类似C++中的三目运算

        max = a if a>b else b  # max取a和b中的较大的值

8. 字典A和字典B 

    并集:A.items() | B.items() 

     A中存在B中不存在的: A.items() - B.items() 

9. list.reverse()没有返回值,会直接反转list,从而改变原list,并且只能对list使用。 
    reversed(seq)有返回值,不会改变原seq,可以对list、dict、str等序列使用。 
    反转和排序不一样,比如34521反转后时12543,而排序(正向)后为12345 

10. 想要在一个长的字符串中筛选出来某个模式的 字符段, e.g. V357529_20220512 这样有模式的片段。可以用正则表达式 

import re 

pattern = 'V[\d]{6}_[\d]{8}' 

re.search(pattern, string, flags=0) 

这样可以搜索到所有 满足这个模式的字符片段,.regs就可以找到它们的起始index.((start1, end1), (start2, end2)) 

关于 正则表达式 的写法,这个网页可以测试 pattern: regex101: build, test, and debug regex 

一下时一些简单的examples:

[\d]{6} 

表示V后面跟着 6 个数字的模式。 

[\s]{8} 

可以用来表示 8个 whitespace 

[.]{24} 

表示24个任意字母数字(除换行符\n外 

[A-Z0-9]{6,10} 

表示大写字母和数字的组合,可以是6至10位 

11. 将两维列表转化为一维列表

matrix = [[1,5,9],[10,11,13],[12,13,15]]
sum(matrix, [])
[1, 5, 9, 10, 11, 13, 12, 13, 15]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值