Когда я изменилв питона, почему, если ранг: быстрее, чем если ранг = 0:
for i in range(0, 100):
rank = ranks[i]
if rank != 0:
pass
к:
for i in range(0, 100):
rank = ranks[i]
if rank:
pass
Я нашел второй код является гораздо более эффективным, почему?
скамейка отметьте его, и в моей ситуации ранги представляют собой целочисленный массив целых чисел. Разница намного больше.
import numpy as np
import time
N = 1000000
ranks = np.random.random_integers(0, 10, N)
start = time.time()
for i in range(0, N):
rank = ranks[i]
if rank != 0:
pass
print time.time() - start
start = time.time()
for i in range(0, N):
rank = ranks[i]
if rank:
pass
print time.time() - start
start = time.time()
for i in range(0, N):
if i != 0:
pass
print time.time() - start
start = time.time()
for i in range(0, N):
if i:
pass
print time.time() - start
выход:
1.15917396545
0.45020198822
0.123136997223
0.122531175613
как вы узнали, что? Вы сравнили это? – zsong
Я бы ожидал немного повышения, так как меньше работы происходит в интерпретированном Python, и многое другое происходит во встроенных методах, но в реальной программе это, вероятно, не будет большим. (Это все равно стоит, так как это стандартный стиль и меньше кода.) – user2357112