46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
def process_list(arr):
|
||
if len(arr) < 1 or len(arr) > 1000:
|
||
return "Error"
|
||
result = []
|
||
for i in arr:
|
||
if i % 2 == 0:
|
||
result.append(i**2)
|
||
else:
|
||
result.append(i**3)
|
||
return result
|
||
|
||
def process_list_lc(arr):
|
||
if len(arr) < 1 or len(arr) > 1000:
|
||
return "Error"
|
||
return [i**2 if i % 2 == 0 else i**3 for i in arr]
|
||
|
||
def process_list_gen(arr):
|
||
if len(arr) < 1 or len(arr) > 1000:
|
||
yield "Error"
|
||
return
|
||
for i in arr:
|
||
yield i**2 if i % 2 == 0 else i**3
|
||
|
||
if __name__ == '__main__':
|
||
import time
|
||
|
||
test_arr = list(range(1, 1000))
|
||
|
||
start = time.time()
|
||
for _ in range(10):
|
||
process_list(test_arr)
|
||
orig_time = time.time() - start
|
||
|
||
start = time.time()
|
||
for _ in range(10):
|
||
process_list_lc(test_arr)
|
||
lc_time = time.time() - start
|
||
|
||
start = time.time()
|
||
for _ in range(10):
|
||
list(process_list_gen(test_arr))
|
||
gen_time = time.time() - start
|
||
|
||
print(f"Исходная: {orig_time}с") # 0.0019960403442382812
|
||
print(f"List comprehension: {lc_time}с") # 0.001004934310913086
|
||
print(f"Генератор: {gen_time}с") # 0.0009999275207519531
|