я изучал для моего теста и наткнулся на это:Понимание разницы во время выполнения списка против Словаря
вопроса: какой алгоритм является быстрым, который является медленным.
def f1():
a = []
for j in range(100000):
a.append(j*j)
for j in range(100000):
if 99999*j == a[j]:
print("yes")
def f2():
a = []
for j in range(100000):
a.append(j*j)
for j in range(100000):
if 99999*j in a:
print("yes")
def f3():
d = {}
for j in range(100000):
d[j] = j*j
for j in range(100000):
if 99999*j in d:
print("yes")
я понял f2 является медленным потому, чтобы проверить, если элемент находится в списке вы бежите по всем членам списка.
Что будет работать быстрее? boolean expression: (99999 * j == a [j]) или (99999 * j в d, где d - словарь и использует хеш) и почему? Я думал, что хэш делает все O (1), чтобы они были равны.
спасибо.
В 3 вы просто проверить ключи и значения не сравнить – sahama