优化Python编程的4个妙招
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化Python编程的4个妙招相关的知识,希望对你有一定的参考价值。
作为一名程序员,敲出最优的Python代码非常非常重要。别无他法,杂乱低效的代码笔记本会消耗你的时间,也会浪费大量项目资金。所以,今天小编就为大家分享一下,优化Python编程的4个妙招,一起了解下吧!
参考技术A1. Pandas.apply() – 特征工程瑰宝
Pandas 库已经非常优化了,但是大部分人都没有发挥它的最大作用。想想它一般会用于数据科学项目中的哪些地方。一般首先能想到的就是特征工程,即用已有特征创造新特征。其中最高效的方法之一就是Pandas.apply(),即Pandas中的apply函数。
在Pandas.apply()中,可以传递用户定义功能并将其应用到Pandas Series的所有数据点中。这个函数是Pandas库最好的扩展功能之一,它能根据所需条件分隔数据。之后便能将其有效应用到数据处理任务中。
2. Pandas.DataFrame.loc – Python数据操作绝妙技巧
所有和数据处理打交道的数据科学家(差不多所有人了!)都应该学会这个方法。
很多时候,数据科学家需要根据一些条件更新数据集中某列的某些值。Pandas.DataFrame.loc就是此类问题最优的解决方法。
3. Python函数向量化
另一种解决缓慢循环的方法就是将函数向量化。这意味着新建函数会应用于输入列表,并返回结果数组。在Python中使用向量化能至少迭代两次,从而加速计算。
事实上,这样不仅能加速代码运算,还能让代码更加简洁清晰。
4. Python多重处理
多重处理能使系统同时支持一个以上的处理器。
此处将数据处理分成多个任务,让它们各自独立运行。处理庞大的数据集时,即使是apply函数也显得有些迟缓。
关于优化Python编程的4个妙招,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。
Python 常用小妙招
本文记录一些
Python
日常编程中的小妙招,并使用IPython
进行交互测试,让我们更好的了解和学习Python
的一些特性。
格式化打印调式信息
In [3]: print('success'.center(20,'='))
======success=======
In [4]: print('failed'.center(20,'='))
=======failed=======
for循环的else
语法:
for 变量 in 可迭代对象:
循环体
else:
循环正常结束
IPython测试
# for 循环
In [1]: for i in range(5):
...: print(i)
...: else:
...: print('for 循环正常结束')
...: print(i)
...:
0
1
2
3
4
for 循环正常结束
4
注意:else
只有 循环正常结束才会走,像 break
退出本层循环就不会走 else
。
来看一个例子,打印10以内的素数(质数)
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
# 求余等于0说明n有其他因数
print(n, '=', x, '*', n // x)
break
else:
# 没有break掉,说明没有找到n的其他因数
# 循环正常结束
print(n, '是一个素数')
结果展示
2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3
数学表达式比较
In [8]: num = 5
In [9]: 3 < num < 8
Out[9]: True
In [10]: 6 < num < 8
Out[10]: False
列表、字典拆箱
列表拆箱
In [12]: a, b, c = [1, 2, 3]
In [13]: a, b, c
Out[13]: (1, 2, 3)
In [25]: li = [1, 2, 3, 4, 5]
In [26]: print(*li)
1 2 3 4 5
将列表元素作为参数传递给函数
In [34]: li = [1, 2, 3, 4, 5]
In [35]: def sum(*args):
...: total = 0
...: for i in args:
...: total += i
...: print(total)
...:
In [36]: sum(*li)
15
字典拆箱
In [27]: user_dict =
...: 'name': 'ithui',
...: 'sex': '男',
...: 'age': 20,
...:
In [28]: user_info = '我叫name,性别sex,今年age岁'.format(**user_dict)
In [29]: print(user_info)
我叫ithui,性别男,今年20岁
函数的关键字参数自动匹配
func_params =
'username': 'ithui',
'mobile': '13022331752',
def query_user(username=None, mobile=None):
# 模拟查询用户信息
print(username)
print(mobile)
sql = """select * from user where username= and mobile=""".format(username, mobile)
print(sql)
query_user(**func_params)
=======================结果如下=======================
ithui
13022331752
select * from user where username=ithui and mobile=13022331752
取中间元素
In [15]: a, *mid, b = [1, 2, 3]
In [16]: mid
Out[16]: [2]
In [17]: a, *mid, b = [1, 2, 3, 4, 5, 7]
In [18]: mid
Out[18]: [2, 3, 4, 5]
In [21]: a, b, *mid, c, d = [1, 2, 3, 4, 5, 7, 8]
In [22]: mid
Out[22]: [3, 4, 5]
获取列表中n个最大或最小的元素
In [38]: import heapq
In [39]: salarys = [5000, 6000, 3500, 5500, 7000, 6500, 8000]
In [40]: # 三个最大的数
In [41]: heapq.nlargest(3, salarys)
Out[41]: [8000, 7000, 6500]
In [42]: # 两个最小的数
In [43]: heapq.nsmallest(2, salarys)
Out[43]: [3500, 5000]
尾语
✍ 用 Code 谱写世界,让生活更有趣。❤️
✍ 万水千山总是情,点赞再走行不行。❤️
✍ 码字不易,还望各位大侠多多支持。❤️
以上是关于优化Python编程的4个妙招的主要内容,如果未能解决你的问题,请参考以下文章