普通方式:
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
提供了“consume”配方,无论出于何种原因需要它: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
这个函数的执行速度最快,因为它避免了使用Python循环的开销,而是使用在C端运行的函数。
itertools.imap
代替生成器表达式(因为你已经在使用 itertools)。 - David Robinsondef every(fun, iterable):
for i in iterable:
fun(i)
如果你只想让myList
被修改,以包含myFunc(x)
对于myList
中的所有x,那么你可以尝试使用列表推导式,它也需要一个变量,但不会让变量泄漏出推导式的作用域:
myList = [myFunc(x) for x in myList]
map()
有什么问题吗? - Burhan KhalidNone
的列表)。 - jamylakfor
循环(或类似的列表推导式)对我来说似乎相当简洁。有时,让事情尽可能地简短更多是一种执念而不是好习惯。简洁有助于可读性,但只有到一定程度。自然语言之所以有很多冗余,是有原因的。 - user180247