正常方式:
for x in myList:
myFunc(x)
你必须使用变量x
使用
map(myFunc,myList)
事实上你必须使用它来完成上述工作
list(map(myFunc,myList))
这将建立一个列表,我不需要建立一个列表
也许有人建议我这样做
def func(l):
for x in l:
....
这是另一个话题
有这样的东西吗?
every(func,myList)
答案 0 :(得分:6)
'正常方式'绝对是最好的方式,虽然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循环开销。
答案 1 :(得分:3)
AFAIK没有' foreach'标准库中的快捷方式,但这样的事情很容易实现:
def every(fun, iterable):
for i in iterable:
fun(i)
答案 2 :(得分:0)
如果您只想修改myList
以包含myFunc(x)
中所有x的myList
,那么您可以尝试列表理解,这也需要一个变量,但不要让变量泄漏超出理解范围:
myList = [myFunc(x) for x in myList]
希望有所帮助