Python 日常开发效率提升秘籍:掌握这些函数,让你事半功倍!

Python 以其简洁的语法和强大的标准库而闻名,为开发者提供了极大的便利。在日常开发中,合理利用 Python 的标准库和第三方库中的高效函数,可以显著提高编码效率和程序性能。本文将介绍一些常用的 Python 包及其函数,助你在编程之路上事半功倍。

一、统计列表中每个元素出现的次数

有如下列表:_list = [1, 2, 2, 3, 4, 4]


# 方法1:
from collections import Counter
num_count = dict(Counter(_list))
# 打印结果
# print(num_count)
# {1: 1, 2: 2, 3: 1, 4: 2}

# 方法2:
import pandas as pd
num_count = dict(pd.value_counts(_list))
# print(num_count)
# {1: 1, 2: 2, 3: 1, 4: 2}

二、python 合并字典,相同 key 的 value 相加

A = {"a": 1, "b": 2, "c": 3}
B = {"a": 2, "d": 5}
res = dict(Counter(A) + Counter(B))
# print(res)
# {'b': 2, 'c': 3, 'a': 3, 'd': 5}

三、如果将'[1,2,3,4]'字符串类型转换成[1,2,3,4]列表类型

str_list = '[1,2,3,4]'  # type: str
eval(str_list)  # type: list

四、字节类型十六进制转换整数

byte = b'\x01'
res = int.from_bytes(byte, byteorder='big')
# print(res)
# 1

五、for循环搭配else的使用

使用for...else...的场景是,当迭代的对象迭代完并为空时,位于else的子句将执行。但是需要注意如下的问题。对于如下代码:

for i in range(5):
    if i == 3:
        print('found i = %s' % i)
else:
    print('not found ...')

我们期望的结果是为:

found i = 3

但实际输出的是

found i = 3
not found ...

如果在for循环中含有break时则直接终止循环,并不会执行else子句。所以正确的写法应该为:

for i in range(5):
    if i == 3:
        print('found i = %s' % i)
		break
else:
    print('not found ...')

六、判断字符串的后缀是否符合多个条件

# 判断文件的后缀名是否为.txt/.csv/.xlsx
file_name = 'aaa.txt'
file_name.endswith(('.txt', '.csv', '.xlsx'))

七、dict类型转DataFrame

dict -> DataFrame,使用from_dict方法 DataFrame -> dict,使用to_dict方法

my_dic = {'a': [1, 3, 4], 'b': [2, 3, 4]}
pd.DataFrame.from_dict(my_dic, orient='index')

八、python中动态定义变量名

利用命名空间动态赋值

在Python的命名空间中,将变量名与值存储在字典中,可以通过locals(),globals()函数分别获取局部命名空间和全局命名空间。例:

# 定义变量names,使用local局部命名
names = locals()
# 则结果会定义两个变量n1、n2
for i in range(2):
	names['n' + str(i)] = i

# 调用动态变量,结果都返回1
# 方法一:使用exec函数
exec('print(n1)')
# 方法二:使用.get方法
print(names.get('n1'))

九、屏闭warning

import warnings
# 屏闭sklearn模块中的DeprecationWarning
warnings.filterwarnings(module='sklearn*', action='ignore', category=DeprecationWarning)