不使用zip 或每次按其索引访问元素的另一种解决方案
prev, *lst = [3, 5, 2, 3, 1, 2, 3, 1, 3]
greater = []
for i in lst:
if prev < i:
greater.append(i)
prev = i
@Jan 提供的测试用例:
def mushif(lst):
greater = []
for i in range(1, len(lst)):
if lst[i] > lst[i-1]:
greater.append(lst[i])
def jan(lst):
greater = [item[1] for item in filter(lambda x: x[1] > x[0], zip(lst, lst[1:]))]
def roadrunner(lst):
greater = [y for x, y in zip(lst, lst[1:]) if y > x]
def vishes_shell(lst):
start, *lst = lst
greater = []
for i in lst:
if start < i:
greater.append(i)
start = i
import timeit, functools, random
lst = [3, 5, 2, 3, 1, 2, 3, 1, 3]
print('Runnig with {} elements'.format(lst))
print('mushif', timeit.timeit(functools.partial(mushif, lst), number=10**5))
print('jan', timeit.timeit(functools.partial(jan, lst), number=10**5))
print('roadrunner', timeit.timeit(functools.partial(roadrunner, lst), number=10**5))
print('vishes_shell', timeit.timeit(functools.partial(vishes_shell, lst), number=10**5))
lst = [random.randint(1, 100) for _ in range(100)]
print('Runnig with 100 elements')
print('mushif', timeit.timeit(functools.partial(mushif, lst), number=10**5))
print('jan', timeit.timeit(functools.partial(jan, lst), number=10**5))
print('roadrunner', timeit.timeit(functools.partial(roadrunner, lst), number=10**5))
print('vishes_shell', timeit.timeit(functools.partial(vishes_shell, lst), number=10**5))
lst = [random.randint(1, 100) for _ in range(1000)]
print('Runnig with 1000 elements')
print('mushif', timeit.timeit(functools.partial(mushif, lst), number=10**5))
print('jan', timeit.timeit(functools.partial(jan, lst), number=10**5))
print('roadrunner', timeit.timeit(functools.partial(roadrunner, lst), number=10**5))
print('vishes_shell', timeit.timeit(functools.partial(vishes_shell, lst), number=10**5))
输出:
Runnig with [3, 5, 2, 3, 1, 2, 3, 1, 3] elements
mushif 0.22174075798830017
jan 0.367339823016664
roadrunner 0.16411117801908404
vishes_shell 0.16474426098284312
Runnig with 100 elements
mushif 1.8483440639975015
jan 2.6946504779916722
roadrunner 0.8267438650073018
vishes_shell 1.1597095750039443
Runnig with 1000 elements
mushif 21.29723681899486
jan 26.859666333009955
roadrunner 8.274298987002112
vishes_shell 12.677083582995692
如您所见,roadrunner 是最好的。