python函数处理_python--数据处理之特殊函数及表达式(一)

目录

概述

表达式

1. lambda

2. map

3.filter

4. reduce

5.zip

6.translate

概述

整理一些python常用并且基础的内容

1. 表达式(lambda)

2. 特殊函数(内置函数:map filter reduce zip list.sort sort)

表达式

1. lambda

lambda只是一个表达式,很多时候定义一个函数会过于麻烦,因此可以用lambda定义一个匿名函数

用法

lambda args:return  冒号前面是参数,可以有0个或者多喝,用逗号隔开;冒号右边是返回值

例子

lambda x,y : x+y

lambda x=1,y=2 : x+y

特殊函数

1、list.sort与sort

内建方法

list.sort(func=None, key=None, reverse=False(or True))

对于reverse这个bool类型参数,当reverse=False时:为正向排序;当reverse=True时:为反向排序。默认为False。执行完后会改变原来的list,如果你不需要原来的list,这种效率稍微高点为了避免混乱,其会返回none

list = [2,8,4,6,9,1,3]

list.sort()

结果: [1,2,3,4,6,8,9]

内建函数sorted()

不会改变原有的list,而是会返回一个新的已经排好序的list

sort(list, reverse=False(or True))

list = [2,8,4,1,5,7,3]

other = sorted(list)

自定义排序函数

#Python3想用cmp而不是key的话,需要from functools import cmp_to_key ,

#然后sort或者sorted的时候key=cmp_to_key(your_comparator)

#leetcode 179

from functools import cmp_to_key

class Solution:

def cmp(self,num1,num2):

str1 = str(num1)

str2 = str(num2)

if str1+str2 > str2+str1:

return -1

else:

return 1

def largestNumber(self, nums: List[int]) -> str:

num = sorted(nums,key = cmp_to_key(self.cmp))

if num[0] == 0: #对0的处理

return "0"

return ''.join(str(i) for i in num)

关于key

from operator import itemgetter, attrgetter

student_tuples = [

('john', 'A', 15),

('jane', 'B', 12),

('dave', 'B', 10),

]

sorted(student_tuples, key=lambda student: student[2]) #sort by age

#结果  [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

sorted(student_tuples, key=itemgetter(2)) #sort by age 也可以多层次排序,例如先按照成绩,在按照年龄

#结果 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

sorted(student_objects, key=attrgetter('age')) #sort by age

#结果  [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

2. map

用法

map(function, sequence)

对sequence(列表/元祖/字符串)的item依次执行function(item),将执行结果组成list返回

例子

map(lambda x:x*x,range(10))

#结果[0,1,4,9,16,25,36,49,56]

3.filter

用法

filter(function, sequence)

对sequence的item依次执行function(item) 将执行结果为TRUE的item组成一个list/string/tuple(取决于sequence)

例子

filter(lambda x:x*x-4, range(10))

#结果: [0, 1, 3, 4, 5, 6, 7, 8, 9]

4. reduce

用法

reduce(function, sequence, starting_value)

对sequence的item顺序执行function,如果有start_value,可以作为初始值调用。function接收的参数个数只能为2,先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。返回值是数值

例子

reduce(lambda x,y:x*y-4,range(4))

#结果:-40

5.zip

例1

x = [1, 2, 3]

y = [4, 5, 6]

z = [7, 8, 9]

xyz = zip(x, y, z)

print xyz

结果是

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

例2

x = [1, 2, 3]

y = [4, 5, 6, 7]

xy = zip(x, y)

print xy

结果是

[(1, 4), (2, 5), (3, 6)]

例3

x = [1, 2, 3]

x = zip(x)

print x

结果是

例4

[(1,), (2,), (3,)]

x = [1, 2, 3]

y = [4, 5, 6]

z = [7, 8, 9]

xyz = zip(x, y, z)

u = zip(*xyz)

print u

结果是 (类似于unzip)

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

6.translate

将字符串的一些值替换成另外的字符

#!/usr/bin/python

from string import maketrans   # 引用 maketrans 函数。

intab = "aeiou"

outtab = "12345"

trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";

print str.translate(trantab);   #3th3s 3s str3ng 2x1mpl2....w4w!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值