2019独角兽企业重金招聘Python工程师标准>>>
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by weilai on 2016/12/28
def find(data_list, find_lambda):
if not isinstance(data_list, list):
return
for item in data_list:
if find_lambda(item):
return item
return None
def first(data_list, find_lambda):
if not isinstance(data_list, list):
raise Exception('it is not list')
for item in data_list:
if find_lambda(item):
return item
raise Exception('not find')
def find_all(data_list, find_lambda):
if not isinstance(data_list, list):
raise Exception('it is not list')
temp_list = []
for item in data_list:
if find_lambda(item):
temp_list.append(item)
return temp_list
def select(data_list, select_lambda):
if not isinstance(data_list, list):
raise Exception('it is not list')
temp_list = []
for item in data_list:
field = select_lambda(item)
temp_list.append(field)
return temp_list
def select_many(data_list, select_lambda):
if not isinstance(data_list, list):
raise Exception('it is not list')
temp_list = []
for item in data_list:
fields = select_lambda(item)
temp_list.append(fields)
return temp_list
def sum(data_list, sum_lambda):
if not isinstance(data_list, list):
raise Exception('it is not list')
temp = None
for item in data_list:
field = sum_lambda(item)
temp += field
return temp
def max(data_list, func):
if not isinstance(data_list, list):
raise Exception('it is not list')
if len(data_list) <= 0:
raise Exception('list no item')
data_list.sort(key=func)
temp = data_list[-1]
return temp
def min(data_list, func):
if not isinstance(data_list, list):
raise Exception('it is not list')
if len(data_list) <= 0:
raise Exception('list no item')
data_list.sort(key=func)
temp = data_list[0]
return temp
def exists(data_list, equals_lambda):
if not isinstance(data_list, list):
raise Exception('item type not equals')
for item in data_list:
if equals_lambda(item):
return True
return False
def equals(item1, item2):
if item1 == item2:
return True
return False
def distinct(data_list, equals_lambda):
if not isinstance(data_list, list):
raise Exception('it is not list')
temp = []
for x in data_list:
has = False
for y in temp:
if equals_lambda(x, y):
has = True
break
if not has:
temp.append(x)
return temp
def group_by(data_list, item_lambda):
if not isinstance(data_list, list):
raise Exception('it is not list')
temp = []
fin_temp = []
for x in data_list:
has = False
for y in temp:
if y == item_lambda(x):
has = True
break
if not has:
temp.append(item_lambda(x))
for t in temp:
fin_temp.append((t, find_all(data_list, lambda m: item_lambda(m) == t)))
return fin_temp
# 测试
L = [('b', 1), ('a', 2), ('c', 4), ('c', 3)]
L.sort(key=lambda x: x[0])
print(find_all(L, lambda x:x[0] == 'a'))
print(distinct(L, lambda x, y: x[0] == y[0]))
print(group_by(L, lambda x: x[0]))
print(L)