大数据常用的三个函数:
foo = [12,1,20,30,15,85,100,25]
map函数,返回map对象,每一个元素做运算
#每个元素的倍数
mapFunction = map(lambda x : x*2,foo) for i in mapFunction: print(i,end=" ")
filter 过滤掉不满足条件的结果,并把相同结果组成一个新的对象 filter
#过滤掉不能被三整除的数
filterFuntion = filter(lambda x : x % 3 ==0,foo) print(type(filterFuntion)) for i in filterFuntion: print(i,end=" ")
reduces 统计数据,返回结果,不过在使用前,需要导入模块
#求和
from functools import reduce sum = reduce(lambda x,y:x+y,foo); print(sum)
python中自定义排序函数:
Python内置的 sorted()函数可对list进行排序:
>>>sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]
但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
因此,如果我们要实现倒序排序,只需要编写一个reversed_cmp函数:
def reversed_cmp(x, y):
if x > y:
return -1
if x < y:
return 1
return 0
这样,调用 sorted() 并传入 reversed_cmp 就可以实现倒序排序:
>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]
sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']
'Zoo'排在'about'之前是因为'Z'的ASCII码比'a'小。
.sort()排序方法
shus.sort()对原有列表进行排序,改变原来列表的顺序,无返回值
print(shus)就是改变后的列表
sorted()排序函数
排序时不影响原数据,产生新的排序数据
print(sorted(shus))排序后的结果
print(shus)还是原结果
练习:
对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写排序的算法。
输入:['bob', 'about', 'Zoo', 'Credit']
>>> a = ['bob', 'about', 'Zoo', 'Credit']
>>> print(sorted(a, key=str.lower))
结果:
['about', 'bob', 'Credit', 'Zoo']
简介:
1. 类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法,
对象是类的实例。
2.方法: 类中定义的函数
3.类变量: 类变量在整个实例化的对象中是公有的,类变量定义在类中且在方法体外。
4.数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。
5.方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫做方法覆盖
6.实例变量:定义在方法中的变量,只作用于当前实例的类.
7.继承: 即一个派生类继承基类的字段和方法,继承也允许把一个派生类的对象作为一个基类对待。
8.实例化 :创建一个类的实例,类的具体对象。
9.对象 : 通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法。
python支持多继承。
类的初始函数可以定义为,一个名为__init__()的特殊函数(构造方法)
class MyClass:
def __init__(self,name):
self.nam=name
实例化类的时候,就需要 给这个类加上相对应的参数 例如: x = MyClass("我的名字")
self代表类的实例,而非类。类的方法和普通的函数只有一个特别的区别--方法必须有一个额外的参数名称。
类的方法:
在类的内部,使用def关键子来定义一个方法,方法参数必须要加上self,且作为第一个参数。
在类中也可以定义私有属性和私有方法 例如:
class Person:
#定义一个私有属性,私有属性在类的外部无法直接进行访问
__name="张三"
#定义私有方法
def __methon(self):
print("我是私有方法,只能在本类中使用哟")
继承:
定义如下
class FacterClass(object):
print("所有的类默认都是继承object的")
class paishenglei(FacterClass):
print("我是派生类,我继承了这个类")
需要注意圆括号中基类的顺序,若是基类和派生类有相同的方法名,默认调用派生类的。
多继承
python跟别的语言有所不同就是python可以多继承,格式如下:
class DuoJiCheng(派生类1,派生类1,派生类1....):
具体操作
类的专有方法:
__init__:构造方法,在生成对象是调用
__del__:自动销毁方法,当对象没有引用的时候,或者程序结束的时候,程序会自动调用__del__方法
使用就是 del 引用名称
__str__(): #相当于java中的toString,用来测试类的
return xxxx;
可以测试一个对象有多少个引用:
import sys
t=T()
sys.getrefcount(t)返回2