正常方式:
for x in myList:
myFunc(x)
您必须使用变量 x
利用
map(myFunc,myList)
事实上你必须用它来完成上述工作
list(map(myFunc,myList))
那将建立一个列表,我不需要建立一个列表
也许有人会建议我这样做
def func(l):
for x in l:
....
那是另一个话题
有这样的吗?
every(func,myList)
正常方式:
for x in myList:
myFunc(x)
您必须使用变量 x
利用
map(myFunc,myList)
事实上你必须用它来完成上述工作
list(map(myFunc,myList))
那将建立一个列表,我不需要建立一个列表
也许有人会建议我这样做
def func(l):
for x in l:
....
那是另一个话题
有这样的吗?
every(func,myList)
“正常方式”绝对是最好的方式,尽管出于您可能需要的任何原因itertools
都提供了消费配方:
import collections
from itertools import islice
def consume(iterator, n):
"Advance the iterator n-steps ahead. If n is none, consume entirely."
# Use functions that consume iterators at C speed.
if n is None:
# feed the entire iterator into a zero-length deque
collections.deque(iterator, maxlen=0)
else:
# advance to the empty slice starting at position n
next(islice(iterator, n, n), None)
这可以像这样使用:
consume(imap(func, my_list), None) # On python 3 use map
此函数执行速度最快,因为它通过使用在 C 端运行的函数避免了 python for 循环开销。
AFAIK 标准库中没有“foreach”快捷方式,但这样的事情很容易实现:
def every(fun, iterable):
for i in iterable:
fun(i)
如果您只想myList
修改为包含myFunc(x)
所有 x inmyList
那么您可以尝试一个列表推导,它也需要一个变量,但不会让变量泄漏到推导范围之外:
myList = [myFunc(x) for x in myList]
希望有帮助