d_list
на 100.000 у меня выполнилось за 0.6868....res = []
for dictionary in d_list: # * 100_000:
result_dict = {}
for key in dictionary:
if dictionary[key] is not None:
result_dict[key] = dictionary[key]
result_dict = {**result_dict, **{'qty1': False, 'fp1': False,
'qty2': False, 'fp2': False,
'qty3': False, 'fp3': False}}
if isinstance(dictionary['b'], list):
for z in range(1, len(dictionary['b']) - 1):
result_dict[f'qty{z}'] = dictionary['b'][z - 1]['qty']
result_dict[f'fp{z}'] = dictionary['b'][z - 1]['fp']
res.append(result_dict)
b
в исходном виде.res = []
for dictionary in d_list: # * 100_000:
result_dict = {'a': dictionary['a'],
'c': dictionary['c'],
'qty1': False, 'fp1': False,
'qty2': False, 'fp2': False,
'qty3': False, 'fp3': False
}
if isinstance(dictionary['b'], list):
for z in range(1, len(dictionary['b']) - 1):
result_dict[f'qty{z}'] = dictionary['b'][z - 1]['qty']
result_dict[f'fp{z}'] = dictionary['b'][z - 1]['fp']
res.append(result_dict)
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True - списки имеют одинаковое содержимое
print(a is b) # False - a и b ссылаются на разные объекты-списки, а не на один и тот же.
a = 1
b = 1.0
print(isinstance(a, int), isinstance(a, float)) # True False - a это int, но не float
print(isinstance(b, int), isinstance(b, float)) # False True - b это не int, это float
print(isinstance(a, (int, float))) # True - a является чем-то из двух: или int, или float
@font-face {
font-family: "pragmatica";
font-display: swap;
src: url("fonts/pragmatica.woff2") format("woff2"),
url("fonts/pragmatica.woff") format("woff");
font-weight: 400;
}
def partial(func: typing.Callable[[int, int], int], arg1: int) -> typing.Callable[[int], int]:
def wrapper(arg2: int) -> int:
return func(arg1, arg2)
return wrapper
def add (x: int, y: int) -> int:
return x + y
def div(x: int, y:int) -> int:
return x // y
add_42 = partial(add, 42)
print(add_42(3)) # 42 + 3 = 45
div_120 = partial(div, 120)
print(div_120(30)) # 120 // 30 = 4
def curry(func: typing.Callable[[int, int], int]) -> typing.Callable:
def wrapper(*args):
if len(args) == 2:
return func(*args)
elif len(args) == 1:
return partial(func, args[0])
else:
raise Exception('Invalid arguments')
return wrapper
curried_add = curry(add)
print(curried_add(32, 23)) # 55
add_30 = curried_add(30)
print(add_30(70)) # 30 + 70 = 100