技术交流QQ群:1027579432,欢迎你的加入!
Python3中一些有用的函数
prod_id = [1, 2, 3]
prod_name = ["foo", "bar", "baz"]
prod_dict = dict(zip(prod_id, prod_name))
print("prod_dict:", prod_dict)
- 2.从一个列表中删除重复值,并保持原始列表中元素的顺序
from collections import OrderedDict
nums = [1, 2, 4, 3, 0, 4, 1, 2, 5]
result = list(OrderedDict.fromkeys(nums))
print("result:", result)
from collections import defaultdict
def multi_level_dict():
return defaultdict(multi_level_dict)
d = multi_level_dict()
d['a']['a']['y'] = 2
d['b']['c']['a'] = 66
d['x']['z'] = 4
print("d:", d)
nums = [1, 2, 4, 0, 5]
first_match = next(i for i in nums if i > 3)
print("first match:", first_match)
- 上面的首项匹配时,如果没有找到任何符合条件的匹配值时,将会抛出StopIteration异常;为了捕捉到这个异常,可以自定义first_matched函数
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)
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)
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)
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')))