1、匿名函数lambda
一段示例代码:
def f(x, y):
return x+y
reduce(f, [1,2,3]) # reduce的作用是将list中的值累计相加(f函数提供的计算)1+2=3,3+3=6
等价于:
reduce(lambda x,y:x+y, [1,2,3])
更多示例:
list1=[2, 18, 9, 22, 17, 24, 8, 12, 27]
[x for x in filter(lambda x:x%3==0, list1)] # filter函数将已知的序列的每个元素调用给定的布尔函数,调用中,返回值为非零的元素将被添加至一个列表中
[18, 9, 24, 12, 27]
[x for x in map(lambda x:x*2, list1)] # map()将函数调用映射到每个序列的对应元素上并返回一个含有所有返回值的列表
[4, 36, 18, 44, 34, 48, 16, 24, 54]
这里需要注意的是filter和map两个函数在python2和3中的区别,在2中可以直接运行map(lambda x:x*2, foo)即可得出结果,而在3中如果直接运行的话,会显示为:<map at 0x1e7ae75ceb8>,所以如果想要得到值的话需要遍历下列表。
2、python的浅拷贝copy()和深拷贝deepcopy()
同样是以一个例子来开始:
import copy
a = [1,2,3,4,['a','b']] # 原始对象
b = a
c = copy.copy(a) # 对象拷贝,浅拷贝
d = copy.deepcopy(a) # 对象拷贝,深拷贝
a.append(5)
a[4].append('c')
print('a=', a)
a= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
print('b=', b)
b= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
print('c=', c)
c= [1, 2, 3, 4, ['a', 'b', 'c']]
print('d=', d)
d= [1, 2, 3, 4, ['a', 'b']]