map函数:
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
map(function, iterable, …)
map(sin, [1,2,3,4,5])
lambda函数
lambda只能完成简单的逻辑,其是一个表达式
基本语法:
lambda arg1,arg2,…,arg3n : <表达式>
argi相当于函数的参数输入,表示式相当于函数体,该表达式运算结果及相当于函数返回值;
通常用法:
f = lambda ...
result = f(...)
map和lambda表达式合用
map(lambda x: write(x, im_batches, orig_ims), output)
就是lambda的输入为output列表,最终生成一个列表,注意lambda表达式里面用到了其它函数‘write’;
为什么不能单独用map?—-write函数有三个输入;
detnames = pd.Series(imlist).apply(lambda x: “{}/det{}”.format(args.det,x.split(“\“)[-1]))
可以看到某些对象可以通过apply调用lambda表达式apply用法
apply函数的格式为:apply(func,args,*kwargs)
用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并将元组或者字典中的参数按照顺序传递给参数;
比较常用语DataFrame等。
df.apply(func)
对df里面的元素进行func操作对字符串进行排序(利用lambda表达式)
# 例如path下的文件都是"sharedString"+"_"+str(number)+".jpg"的形式
files = os.lisdir(path)
im_names = files
tempStr = im_names[0]
index_start = tempStr.rfind('_') + 1
print(tempStr[index_start:-4])
im_names.sort(key=lambda x:int(x[index_start:-4])) # 按照number大小进行排序