劣化代码:
s = []
for i in seq:
s.append(foo(i))
推荐代码:
s = map(foo, seq)
更高效的代码
for i in itertools.imap(foo, seq):
bar(i)
劣化代码:
for i in xrange(len(seq1)):
foo(seq1[i], seq2[i])
推荐代码:
for i, j in zip(seq1, seq2)
foo(i, j)
更高效:
for i, j in itertools.izip(seq1, seq2):
foo(i, j)
劣化代码:
for i in xrange(len(seq)):
foo(seq[i], i)
推荐代码:
for i, item in enumerate(seq):
foo(item, i)
劣化代码:
s = seq[:]
s.reverse()
for i in s:
foo(i)
推荐代码:
for i in reversed(s):
foo(i)
劣化代码:
def foo(seq, bgn, end):
i=0
while(bgn < end): bar(seq[bgn], i )
bgn += 1
i += 1
def foo(seq, bgn, end):
tmp_seq = seq[bgn:end]
for i, item in enumerate(tmp_seq):
bar(item, i)
推荐代码:
def foo(seq, bgn, end):
for begin, i in itertools.izip(xrange(bgn, end), itertools.counter()):
bar(seq[begin], i)
劣化代码:
for i in seq:
if pred(i):
foo(i)
推荐代码:
for i in itertools.ifilter(pred, seq):
foo(i)
如果你又更好的方案,请继续补吧。