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

目录

 

概述

表达式

1. lambda

2. map

 3.filter

 4. reduce

5.zip


概述

整理一些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)

关于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)]

猜你喜欢

转载自blog.csdn.net/weixin_42670653/article/details/84327213