python3使用技巧

1、按关键字排序

a.第一关键字升序

intervals = sorted(intervals, key=lambda x:x[0])

b.多关键字,第一关键字降序

people = sorted(people, key = lambda x:(-x[0], x[1]))

c.自定义比较函数

def compare(x, y):

            #小于0的时候调换位置

            return int(y+x) - int(x+y)

nums = sorted(map(str, nums), key=cmp_to_key(compare))

2、累积函数

reduce函数:每次从list中取一个元素和上一次的结果做运算 

reduce(lambda x, y: x ^ y, nums)

3、ascii码和字符的互换

a.

ord(‘a’)

b.

chr(97)

4、小顶堆的使用

import heapq

h=[]

heapq.heapify(h)

heapq.heappush(h,2)

heapq.heappop(h)

5、记忆化搜索

import functools

@functools.lru_cache(None)

6、获取数字的二进制表示

bin(8)

负数的时候需要考虑补码

bin(-8 & & 0b1111111111111111)

7、计算字符串中某个字符的数量

s.count(ss)

8、计算不同值出现的个数

import collections

dic = collections.Counter(tasks)

9、map函数用法

map() 函数语法:map(function, iterable, …)

a. 

def square(x) : # 计算平方数

     return x ** 2

A=list(map(square, [1,2,3,4,5])) # 计算列表各个元素的平方

b.

list(map(lambda x: x * x, data))

10、filter函数用法

filter(function, iterable) #function为判断函数,iterable为可迭代对象

以下代码展示了从列表中过滤掉所有奇数:

def is_odd(n): return n % 2 == 1 

tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

11、注意字典的关键字也可以是一个类

12、3, 1 = divmod(7, 2)

直接获得商和余数

13、is函数

判断字符是否是数字 s.isdigit()

判断是否是小写字母 s.islower(0

判断变量(对象)的类型 isinstance (a, int)

14、bit_count()

3.10版本以后更新的函数,可以直接计算数的二进制的1的为数,方便计算信息距离

15、获取最低的为1的幂次

(x) & (-x)


16、re.split

leetcode 819

当有多个切割符的时候,str.split就不行了

https://blog.csdn.net/weixin_37804469/article/details/106887991

两个以上切割符放到'[ ]'这个里面

n = 'sssksssdsss'

print(re.split(r'[kd]', n)) # ['sss', 'sss', 'sss']

17、random的用法

randint(0,n) #在0-n中随机取一个值

randrange(n) #在0-n-1中随机取一个值

# 伪随机数当制定了random.seed()后,随机的结果就是确定的,当不指定seed时,使用当前时间作为seed

https://docs.python.org/zh-cn/3/library/random.html

18、二分查找

bisect.bisect_left(list, num) #在list中查找num的索引

bisect.insort_left(list, num) #在list中插入num,放入值的左侧


19、反转矩阵

grid_new = [list(g) for g in zip(*grid)] # 883

20、pairwise

以窗口大小为2重新组织列表

# Python 3.10 新特性

20、有序字典

from sortedcontainers import SortedDict

i = self.booked.bisect_left(end)

大于等于end的标号


21、创建枚举类

from enum import Enum

class Week(Enum):

    monday = 1


22、得到一个二进制数第一个为1的位置

x = x1&-x1

你可能感兴趣的:(python3使用技巧)