def first_matched(iterable, check_condition, default_value=None):
return next((i for i in iterable if check_condition(i)), default_value)
first_match = first_matched(nums, lambda x: x > 3)
print("first match:", first_match)
first_match = first_matched(nums, lambda x: x > 9, 'no_match')
print("first match:", first_match)
5.查找集合Set的所有子集subset
import itertools as it
def powerset(iterable):
s = list(iterable)
return it.chain.from_iterable(it.combinations(s, r) for r in range(len(s) + 1))
list1 = list(powerset([1, 2, 3]))
print(list1)
6.定时器装饰器函数
from time import time
from functools import wraps
# 装饰器函数
def timeit(func):
"""
参数func:被修饰的函数名
返回值:被定时器进行装饰的函数
"""
@wraps(func)
def wrapper(*args, **kwargs):
start = time()
result = func(*args, **kwargs)
end = time()
print("函数{}的执行时间是:{: .4f}s".format(func.__name__, end - start))
return result
return wrapper
# 实例如下:
import random
@timeit
def sort_rnd_num(): # 被修饰函数
numbers = [random.randint(100, 200) for _ in range(100000)]
numbers.sort()
return numbers
numbers = sort_rnd_num()
print("numbers:", numbers)
7.计算文件有多少行
def file_len(file_name, encoding="utf8"):
with open(file_name, encoding=encoding) as f:
i = -1
for i, line in enumerate(f):
pass
return i + 1
from pathlib import Path
p = Path()
path = p.resolve() # 类似于os.path.abspath
print(sum(file_len(f) for f in path.glob('*.py')))