Python22个构造函数法-助力数据挖掘与分析

董汇标MINUS 凹凸数据

如果你经常用python做一些小的项目玩,或者用python做一些爬虫,又或者你去一些网站刷题,那么必将面对一个问题——写函数。

“写函数”也就是自己写一个算法,用来实现一些功能。比如最简单的给电脑两个参数,让他计算这两个参数的关系。

下边献上22个函数构造练习,将会助力大家在数据挖掘与分析方面更进一步!

建议大家收藏此文,有时间在自己的环境里亲自跑一遍加深理解。

01

两个变量互换

两个变量可以通过这种方式互相互换着赋值

a = 5                               b = 10                                                     a, b = b, a    print(a) # 10    print(b) # 5# 这个看起来不是函数,但是这种用法在函数中常用

02

检查是不是偶数

这个功能主要展示的不是快速判断是不是偶数,而是bool判断的用法.因为10可以被2整除,所以余数为0,因此它是==0的,如果换成is_even(3)那就返回False了。

def is_even(num):    return num % 2 == 0is_even(10)  # True

03

分割一个字符串为一个列表

这个案例使用换行符分割的,实际应用中,随机应变。

def split_lines(s):    return s.split('\n')split_lines('50\n python\n snippets') # ['50', ' python', ' snippets']

04

查找对象使用内存的大小

这个例子中,调用了sys的看内存占用情况函数。数字5占了28内存空间大小,我把这个数字加到9999返回依然是28

import sysprint(sys.getsizeof(5)) # 28print(sys.getsizeof("Python")) # 55

05

翻转字符串

这个案例告诉我们字符串的翻转用法,相应的简单字符串可以翻转,以后的图片\音频\视频,一样可以翻转.如果你在一个函数里用这个功能,可以解决某些场景里的问题。

language = "sumer-minus"   # SUMER是我公众号,minus是我一个网名reversed_language = language[::-1]print(reversed_language)  # sunim-remus

06

打印字符串x遍的小函数

从这里提取两个概念:1如何打印n遍,理解函数调用

def repeat(string, n):    return (string * n)a=repeat('oop!',10) print(a)>>>oop!oop!oop!oop!oop!oop!oop!oop!oop!oop!

07

检查一个字符串是否与他的翻转相同

这个小代码把字符串翻转,和bool又一次加深理解

def palindrome(string):    return string == string[::-1]print(palindrome('python')) # False

08

把一个列表拼装成字符串

用到了列表join方法,数据分析中可能用的多的是pandas的DataFrame格式的矩阵、张量,但一维这些东西一样会遇到使用。

strings = ['老虎', '老鼠', '蟑螂']print('kill'.join(strings))# 老虎kill老鼠kill蟑螂

09

将两个列表删除重复项并合并

如何将两个列表合并并扣除其中的重复项呢?可以看看这个方法,看起来是不是挺“卑鄙”的。挖python墙角感觉,但更好的方法还确实没想出来。实际分析中去重可能不多,但统计众数比较多,如果是string、列表,如何统计重复内容数量,思路类似。

def union(a,b):    return list(set(a + b))union([1, 2, 3, 4, 5], [6, 2, 8, 1, 4]) # 答案:[1,2,3,4,5,6,8]

10

将列表去重

def unique_elements(numbers):    return list(set(numbers))unique_elements([1, 2, 3, 2, 4]) # 答案:[1, 2, 3, 4]

11

找到一组数字的均值

虽然有mean函数,但比如你想自己算依稀的东西用到mean的时候,你可以自己造个,也就两行而已。

def average(*args):    return sum(args, 0.0) / len(args)average(5, 8, 2) # 5.0

12

检查一个数组是不是都是唯一的数值

def unique(list):    if len(list)==len(set(list)):        print("所有数据都是唯一的")    else:        print("并不唯一")unique([1,2,3,4,5]) # 所有数据都是唯一的

13

找到列表频率最大的数据

def most_frequent(list):    return max(set(list), key = list.count)numbers = [1, 2, 3, 2, 4, 3, 1, 3]most_frequent(numbers) # 3

14

角度变弧度

π在math 库中是有定义的,就叫做math.pi

import mathdef degrees_to_radians(deg):    return (deg * math.pi) / 180.0degrees_to_radians(90) # 1.5707963267948966

15

打印运行计算花费时间

这个时间跟电脑速度有关

import timestart_time = time.time()a,b = 5,10  #随便一个过程c = a+b     #随便一个过程end_time = time.time()time_taken = (end_time- start_time)*(10**6)print("运行这个耗费微秒数为:", time_taken)# 运行这个耗费微秒数为: 2.1457672119140625

16

找到一组数的最大公因数

借助工具functools

from functools import reduceimport mathdef gcd(numbers):    return reduce(math.gcd, numbers)gcd([24,108,90]) # 6

17

使用lambda公式

x = lambda a, b, c : a + b + cprint(x(5, 10, 20)) # 35# 或者也可以这样def x(a, b, c):     return a + b + cprint(x(5, 10, 30))  # 35

18

使用map函数

对一个列表每一个元素都进行操作的话,可以用map函数,下边是个小案例

def multiply(n):    return n*nlist1 =[1, 2, 3]result = list(map(multiply, list1))print(result)# [1, 4, 9]

19

使用过滤函数-filter

arr = [1, 2, 3, 4, 5]def Even(x):    return list(filter(lambda x: x % 2 == 0, arr))Even(arr)  # [2, 4]

20

列表连续操作

numbers = [1, 2, 3]def squares(nums):    return [number**2 for number in nums] squares(numbers)# [1, 4, 9]

21

切片操作

切片用于从给定序列中提取元素的连续序列或子序列。以下函数用于合并两个切片操作的结果。首先,我们将列表从索引d切到末尾,然后从开始切成索引d。

def rotate(arr, d):    return arr[d:] + arr[:d]if __name__ == '__main__':    arr = [1, 2, 3, 4, 5]    arr = rotate(arr, 2)    print (arr) # 结果:[3, 4, 5, 1, 2]

22

使用链功能

最后的代码段用于从一行开始调用多个函数并评估结果。

def add(a, b):    return a + bdef subtract(a, b):       return a - ba, b = 5, 10print((subtract if a > b else add)(a, b))  # 15print((subtract if a < b else add)(a, b))  # -5

希望这22个函数构造思路能让大家有一些的进步收获!

作者:董汇标MINUS,首发于知乎,原文地址可以点击左下角原文链接。
整理:朱小五,互联网公司数据分析师。
对文中有疑问可以后台回复“进群”,加入交流群与原作者一起交流。
End

©著作权归作者所有:来自51CTO博客作者mb5fe18e5a55d8d的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Excel函数(4)日期、文本函数
  2. Excel函数(3):查找引用
  3. Excel函数(2)if、rand、round函数
  4. Excel函数(1)统计函数这4个够用了!
  5. 这个Pandas函数可以自动爬取Web图表
  6. 异步函数中的异常处理及测试方法 [每日前端夜话(0x18)]
  7. 高效的10个Pandas函数,你都用过吗?
  8. 8个超好用的Python内置函数,提升效率必备!
  9. 一文搞懂Python匿名函数

随机推荐

  1. Android Socket 发送广播包的那些坑
  2. Android 面试题(2)
  3. Android(安卓)轮播图实现(新手易懂)
  4. [时间线]Android市场的发展
  5. android:layout_gravity 和 android:grav
  6. Android开发-一个简单的五子棋游戏
  7. 【Android】MVC模式在Android系统中的应
  8. Android优缺点
  9. Android的UI构造试图工具hierarchyviewer
  10. 【源码】Android 面包屑导航效果源码、An