有没有办法简单地执行每个元素?

时间:2012-09-24 03:39:30

标签: python python-3.x

正常方式:

for x in myList:
    myFunc(x)

你必须使用变量x

使用

map(myFunc,myList)

事实上你必须使用它来完成上述工作

list(map(myFunc,myList))

这将建立一个列表,我不需要建立一个列表

也许有人建议我这样做

def func(l):
   for x in l:
        ....

这是另一个话题

有这样的东西吗?

every(func,myList)

3 个答案:

答案 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]

希望有所帮助