leetcode刷题笔记-Python常用语法
python常用内置函数
reduce
reduce() 将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
举例如下:对list中的元素求和
1 | sum = reduce(lambda x, y: x+y, [1,2,3,4,5]) |
zip
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
- 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
- 利用 * 号操作符,可以将元组解压为列表。
1 | 1,2,3] a = [ |
python嵌套函数
- 作用:能够保证内部函数的隐私,内部的函数只能被外部函数所调用和访问,不会暴露在全局作用域
- 内层函数访问外层函数中局部变量的方法:
- 不需要修改外层函数中的局部变量:直接访问即可
- 需要修改外层函数中的局部变量:通过关键字
nonlocal
,注意不能使用global
,global会到外层函数之外的存储区寻找相应变量
代码示例:
1 | ### 全局变量 ### |
Tips:
nonlocal只能在函数内的函数中使用,如果直接在全局作用域下定义的函数中使用该语句,会报错!
collections模块
Counter
是一个简单的计数器,例如,可以用来统计字符出现的个数
1 | from collections import Counter |
defaultdict
使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict
注意默认值是调用函数返回的,而函数在创建defaultdict对象时传入。
1 | from collections import defaultdict |
常用数学计算
开方
1 | import math |
乘方
1 | # 方法一 |
最大数与最小数
1 | import sys |
循环
python的循环变量在循环之外仍旧可以使用,例如
1
2
3for i in range(5):
continue
print(i) # 4
字符串
对字符串进行重新排序
1
2
3
4a = "dbca"
b = "".join(sorted(a))
print(b)
# "abcd"字符与ASCII的转化
1
ord('a')
字符串化为十进制
1
int('123')
List
list之间的比较
Python中list可以通过“==”来判断相等,但是里面相同元素的排列顺序必须相同
1 | a = [1,2,3] |
range() 和list之间的转换
1 | a = range(100) |
排序 sort vs. sorted
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
1 | >>>a=[5,2,3,1,4] |
进制与位运算
进制表示
二进制:
1
2
3
4
5bin(5)
'0b101' # 字符串类型
0b1000 abin =
abin
8八进制:
1
2
3
4
5oct(11)
'013'
0o123 (数字0,字母o) aoct =
aoct
83十六进制:
1
2
3
4
5hex(1033)
'0x409'
0xAB ahex =
ahex
171
位运算
- &(按位与运算符):参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
- |(按位或运算符):只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
- ^(按位异或运算符):当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
- ~(按位取反运算符):对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
- <<(左移动运算符):运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
- >>(右移动运算符):把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111
自定义类
- 在编程中经常会遇到对自定义对象的排序,堆维护,优先级队列维护的问题,这就需要数据结构中的元素可比较大小,由于heapq或者list.sort()都只使用小于<比较,所以只需要定义类的__lt__()方法即可
举例如下:
1 | class Node: |
格式化输出
print()
输出之后不换行
1 | a = 5 |
%用法
1.浮点数输出
%f ——保留小数点后面六位有效数字
eg:%.3f,保留3位小数位
%e ——保留小数点后面六位有效数字,科学计数法输出 > eg:%.3e,保留3位小数位,使用科学计数法
%g ——在保证六位有效数字的前提下,如果小数点前的数字个数小于六个,使用小数方式;否则使用科学计数法
eg:%.3g,保留3位有效数字,使用小数或科学计数法
1 | '%f' % 1.11) # 默认保留6位小数 print( |
2.字符串输出
%s %10s——右对齐,占位符10位 %-10s——左对齐,占位符10位 %.2s——截取2位字符串 %10.2s——10位占位符,截取两位字符串
1 | '%s' % 'hello world') # 字符串输出 print( |
format用法
暂无
参考
[1] 一文搞懂Python函数(匿名函数、嵌套函数、闭包、装饰器)!
leetcode刷题笔记-Python常用语法