1)您需要访问数据 时间(即高速缓存的结果,而不是重新计算它们的):
for i in outer: # used once, okay to be a generator or return a list
for j in inner: # used multiple times, reusing a list is better
...
2)您需要 (或除正向顺序之外的任何访问):
for i in reversed(data): ... # generators aren't reversible
s[i], s[j] = s[j], s[i] # generators aren't indexable
3)您需要 字符串(这需要对数据进行两次传递):
s = ''.join(data) # lists are faster than generators in this use case