python使用map函数,循环列表取某字段和固定值取差值绝对值,获取绝对值最小的一列
##需求
当前有一个list列表,其中第八个字段是时间戳,如下:
[(–, --, --, --, --, --, --, 1555052267, --),(–, --, --, --, --, --, --, 1555052255, --)],现在有一个固定的时间戳比如1555052266,需求是希望得到列表中时间戳和给定的1555052266最接近的那列,也就是差值绝对值最小。
用到的函数
1、map() 函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
2、lambda () 函数
lambda 函数相当于一个匿名函数,顾名思义就是不用取名字的函数,相当于现实中的匿名信。匿名函数有个限制,只能有一个表达式,不用写 return,返回值就是该表达式的结果。
代码实现
def get_near_time_data(self, f_time, time_match_list):
# 定义一个空列表存放时间戳最接近的数据
time_match_list_new = []
if len(time_match_list) > 1:
# 获取差值最小的列表角标
index_list = list(map(lambda x: abs(int(x[7]) - int(f_time)), time_match_list))
# 通过获得的角标获得差值最小的列写入返回
time_match_list_new .append(time_match_list[index_list.index(min(index_list))])
return time_match_list_new