python之map/reduce函数、sorted排序及类与对象

三个大数据常用重要函数

python map()函数   

map()函数接收两个参数,一个是函数,一个是序列

map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

map的两种使用方式:1、使用lambda  2、直接调用函数

eg


'''遍历
map
的两种使用方式:1、使用lambdamap(lambdax:x*2+10,foo)  2、直接调用函数:result=map(tt,foo)
x
:每一个元素 '''
foo=[2,10,3,20,49,52,26]
mapDemo=
map(lambda x:x*2+10,foo)
print(mapDemo)
for i in mapDemo:
   
print(i)

def tt(x):
   
return x*2+10
#没有括号,只有函数名表示:函数的引用
m=tt
print("m={0}".format(m))
#调用函数
m=tt(12)
print(m)
result=
map(tt,foo)
print("result:{0}".format(result))

运行结果:

<mapobject at0x04B43790>

14

30

16

50

108

114

62

m=<functionttat 0x04B45858>

34

resulit:<mapobjectat 0x04B43E10><map object at 0x04B43790>

14

30

16

50

108

114

62

m=<functionttat 0x04B45858>

34

resulit:<mapobjectat 0x04B43E10>

python filter()函数:

对于序列中的元素进行筛选,最终获取符合条件的序列li = [11, 22, 33]new_list = filter(lambda arg: arg > 22, li)

foo=[2,10,3,20,49,52,26]
f=
filter(lambda x:x>10,foo)     #过滤满足条件的结果
print(f)
for i in f:
   
print(i)

python reduce()函数:

对于序列内所有元素进行累计操作li = [11, 22, 33]result = reduce(lambda arg1, arg2: arg1 + arg2, li)

reduce内建函数是一个二元操作函数,用来对列表或元组中的所有元素进行传入reduce的fun()函数计算,即求总。

reduce()函数也是Python内置的一个高阶函数。

from functools import reduce
#reduce的使用;from functools import reduce
#
求统计结果
foo=[2,10,3,20,49,52,26]
def re(x,y):
 
return x+y

r=reduce(re
,foo)
print("r={0}".format(r))

#sun的使用:求和
print(sum(foo))
print(max(foo))

python中自定义排序函数:

Python内置的sorted()函数可对list进行排序:

   >>>sorted([36, 5, 12, 9, 21])

[5, 9, 12, 21, 36]

sorted()也是一个高阶函数,可以实现自定义排序 sorted()也可以对字符串进行排序

字符串默认按照ASCII大小来比较:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'])['Credit', 'Zoo', 'about', 'bob']

'Zoo'排在'about'之前是因为'Z'的ASCII码比'a'小。

#自定义排序函数:sorted排序不改变原来的列表,排序后生成新的列表
print(sorted(foo))
print(foo)
s=
sorted(foo,reverse=True)
print(s)

dict={
"c":4,"b":2}
print(sorted(dict.values()))
print(sorted(dict.keys()))
print(sorted(dict.items()))

 

#重写——自定义排序规则
class ReverseDemo:
   
def __init__(self,obj):
       
self.obj=obj
   
def __gt__(self, other):

       
return self.obj<other
print("----------",sorted([23,45,10,9,18],key=lambda x:ReverseDemo(x)))

区分:

.sort()排序方法:对原有列表进行排序,改变原来列表的顺序,无返回值print()就是改变后的列表

sorted()排序函数: 排序时不影响原数据,产生新的排序数据 print(sorted(shus))排序后的结果 print(shus)还是原结果

对字符串排序时,有时候忽略大小写排序更符合习惯。

#忽略大小写
a=['bob','Auliy','aaa','barey','Runnob']
print(sorted(a,key=str.lower)) 

类与对象

类:具有相同的属性和方法的对象的集合。
对象:万物皆对象 var date=new Date();date.get

语法:

 class 类名:
 属性
 方法

创建对象:属性写在类外的情况,就是通过对象.属性,对象.方法()的方式调用
self:
__init__(self):
系统自动调用初始化方法,先生成对象,再调用此方法,再将对象赋值给引用名

定义一个类:

#类和对象
#定义类
class Person:
   
#初始化参数
   
def __init__(self,sex=None):
       
#定义类属性,当前对象.属性=参数
       
self.sex=sex

   
#定义方法,self代表当前对象
   
def eat(self):
       
print("正在吃饭")
   
def sleep(self):
       
print("正在睡觉")
   
def say(self):
       
print("我的姓名:%s,我的年龄:%d"%(self.name,self.age))
#创建对象
p=Person()
#调用方法
p.eat()
p.sleep()

#添加对象属性,只属于当前对象
p.name="张三"
p.age=23
p.sex=""
#print("姓名:%s,年龄:%d"%(p.name,p.age))
p.say()

lisa=Person()
lisa.name=
"李四"
lisa.age=25
lisa.say()

#类 继承了object
class Student(object):

   
def __init__(self,name=None,age=None,sex=None):
       
print("init...")
       
self.name=name
       
self.age=age
       
self.sex=sex
   
def study(self):
       
print("{0}在学习".format(self.name))
   
def __siyou(self):
       
print("siyou")
   
def __str__(self):
       
self.__siyou()
       
return "姓名:{0},年龄:{1},性别:{2}".format(self.name,self.age,self.sex)
   
def __del__(self):
       
print("对象正在销毁...")
s=Student(
'张三')
#del s
#input()

公有方法:

私有方法:def __test():只能在当前类中使用,以__开头

自动销毁方法:

 __del__():

 XXX

当对象没有引用的时候,或程序结束的时候,程序自动调用__del__()

del 引用

删除时自动调用__del__()
程序结束时自动调用__del__()

猜你喜欢

转载自blog.csdn.net/candriy/article/details/80527054