map函数用于遍历序列。对序列中每个元素进行操作,最终获取新的序列
如:
li=[11,22,33]
new_list=map(lambda a:a+100,li)
list(new_list)
输出结果:
[111, 122, 133]
如:
li=[11,22,33]
s1=[1,2,3]
new_list=map(lambda a,b:a+b,li,s1)
list(new_list)
结果为: [12, 24, 36]
筛选函数filter:用于对序列中的元素进行筛选,最终获取符合条件的序列
li=[11,22,33]
new_list=filter(lambda x:x>22,li)
list(new_list)
结果为:[33]
累计函数(reduce):用于对序列内所有元素进行累计操作
from functools import reduce
li=[11,22,33,44]
reduce(lambda arg1,arg2:arg1+arg2,li)
结果为:110
reduce函数还可以接受第3个可选元素,作为计算的初始值,如果把初始值设为100
reduce(lambda arg1,arg2:arg1+arg2,li,100)
结果为:210
计算过程如下:
第一步:先计算初始值和第1个元素,即100+11,结果为:111
第一步:再把结果和第2个元素计算,即111+22,结果为:133
依次计算…
类和对象:
注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身
私有变量和私有方法:
类可以有公有变量和公有方法,也可以有私有变量和私有方法,公有部分的对象可以从外部访问,而私有部分的对象只有在类的内部才可访问。在普通变量名或方法名前加两个"_",即可成为私有变量或方法
实例:
#! /usr/bin/python
# -*- coding:utf-8 -*-
class PubAndPri:
pub="这是公有变量"
__pri="这是私有变量"
def __init__(self):
self.other="公有变量也可以这样定义"
def out_pub(self):
print("公有方法",self.pub,self.__pri)
def __out_pri(self):
print("私有方法",self.pub,self.__pri)
pp = PubAndPri()
pp.out_pub() #公有方法 这是公有变量 这是私有变量
print(pp.pub,pp.other)#这是公有变量 公有变量也可以这样定义
try:
pp.__out_pri()
except Exception as e:
print("调用私有方法发生错误!") #走到了这一步
try:
print(pp._pri)
except Exception as e:
print("访问私有变量发生错误!") #走到了这一步
结果为:
公有方法 这是公有变量 这是私有变量
这是公有变量 公有变量也可以这样定义
调用私有方法发生错误!
访问私有变量发生错误!
注意1:使用str.split()省略分隔符时,会按所有的分隔符号分割,包括\n(换行) \t(tab缩进)等。
注意2:列表和元组之间是可以相互转换的,如list(tuple)、tuple(list)元组操作速度比列表快,列表可改变,元组不可改变,可以将列表转为元组的"写保护"状态。
注意3:当变量时私有的时候,使用_xxx来表示变量是很好地习惯,这时变量在模块或类外不可以使用,意思是只有类对象和子类对象自己能访问到这些变量
注意4:以__双下划线开头的变量名__xxx代表私有成员,意思是只有类对象自己能访问,连子类对象也不能访问这个数据
关于备份:
很多时候处理数据前需要先把数据复制一份,做个备份,但是python里复制数据有不少坑点
参见下面的实例:
>>> a=[3,2,5,4]
>>> id(a) #查看a的存储地址
46419656
>>> c=a #复制一个副本c
>>> c
[3, 2, 5, 4]
>>> id(c) #查看c的存储地址
46419656 #看到c的地址和a的地址一致,说明c不是真正的复制
>>> b=a[:] #复制一个副本b,把a的所有元素赋值给b
>>> b
[3, 2, 5, 4]
>>> id(b) #查看b的存储地址
46416712 #发现b和a的地址不同,说明备份成功
从上面可以看出,c仅仅是a的一个标签,不论是a改变还是c改变都是改变了同一个地址里的内容,所以互相都有影响只有b才是真正的备份。
另外也可以使用copy来进行复制:
>>> a=[1,2]
>>> b=a
>>> c=a.copy()
>>> d=a[:]
>>> b
[1, 2]
>>> c
[1, 2]
>>> d
[1, 2]
>>> id(a)
46416904
>>> id(b)
46416904
>>> id(c)
46416712
>>> id(d)
46419656
可以看到c和d都是对a的复制