python小笔记

from collections import defaultdict, namedtuple
from functools import reduce
from itertools import product
from operator import mul, itemgetter

 

namedtuple: 这个跟java中的类相似

                     

factor_model = namedtuple('factor_model',['index_pre', 'index_aft'])
f = factor_model(0,3)
print(f.index_pre)
print(f.index_aft)   //0 3

 这里namedtuple('namedtuple的名字',[定义元素1,定义元素2])

defaultdict: 与普通dict最大的不同是当在dict查询不存在的key时,不会报错,而是返回对应的数值。而defaultdict允许一个key能对                     应多个value

factor_model = namedtuple('factor_model',['index_pre', 'index_aft'])
f = factor_model(0,3)
f1 = factor_model(2,4)
f2 = factor_model(0,5)
f3 = factor_model(2,6)
print(f.index_pre)
print(f.index_aft)
# defaultdict
d = defaultdict(set)
d[f.index_pre].add(f.index_aft)
d[f1.index_pre].add(f1.index_aft)
d[f2.index_pre].add(f2.index_aft)
d[f3.index_pre].add(f3.index_aft)
print(d)                            //output --- defaultdict(<class 'set'>, {0: {3, 5}, 2: {4, 6}})

遇到相同key时可以凑在一起

 

lamda: 

 lamda相当于定义了一个函数,只是写法简洁一点

e.g  mul = lamda x,y: x * y

        mul(2,3) ----->6相当于把x*y当成一个函数丢给了mul,mul就成为了乘法函数

 

reduce: 

reduce有三个参数(第一个为二元的运算函数,第二个为list, tuple, string之类的迭代,初始运算值)第三个为可选函数

就相当于一个叠加运算的方法

def add(x,y):

       return x+y

red = reduce(add, [1,2,3,4])    // output ---- (((1+2)+3)+4) -----10

可以简化为:

red = reduce(lamda x,y: x+y , [1,2,3,4])

# reduce
red = reduce(lambda x,y:x+y,[[1,2,3]],[2])----output -- [2,1,2,3] 初始值为[2]

这里有个问题搞不懂吗,待日后搞懂(x为初始值)

red = reduce(lambda x,y:y.append(x),[[1,2,3]],[2])----output -- None

product:

e.g  a = product((0,1), repeat = 3)

        print(list(a))----->[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]

itertools.accumulate:累计

a = [4,5,6,7]

x = accumulate(a) 

print(list(x))------output  [4, 9, 15, 22]

 

mul:

这个貌似就是乘法mul(2,3) --> 6

a =(1,3)

b=(2,4)

list(map(mul,a,b))-----(2,12)

itemgetter:

这个可以获取数组元素

a = [[1,2],[3,4]]
b = itemgetter(1)获取index为1的值
print(b(a)) ----[3,4]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值