4

通常の方法:

for x in myList:
    myFunc(x)

変数xを使用する必要があります

使用する

map(myFunc,myList)

実際、上記の作業を行うにはこれを使用する必要があります

list(map(myFunc,myList))

それはリストを作成するでしょう、私はリストを作成する必要はありません

多分誰かが私にこれをすることを提案するでしょう

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

それは別のトピックです

このようなものはありますか?

every(func,myList)
4

3 に答える 3

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ループのオーバーヘッドを回避するため、最も高速に実行されます。

于 2012-09-24T03:56:53.783 に答える
3

AFAIKには、標準ライブラリに「foreach」ショートカットはありませんが、そのようなものは非常に簡単に実装できます。

def every(fun, iterable):
    for i in iterable:
        fun(i)
于 2012-09-24T04:07:28.350 に答える
0

すべてのxmyListを含むように変更したいだけの場合は、変数も必要とするリスト内包を試すことができますが、変数が内包の範囲から漏れることはありません。myFunc(x)myList

myList = [myFunc(x) for x in myList]

お役に立てば幸い

于 2012-09-24T04:04:50.990 に答える