[python] 파이썬 3에는 ‘foreach’함수가 있습니까?

상황을 만날 때 자바 스크립트로 foreach할 수 있습니다. 함수가 있으면 편리 할 것이라고 항상 생각 합니다. foreach는 아래에 설명 된 기능을 의미합니다.

def foreach(fn,iterable):
    for x in iterable:
        fn(x)

그들은 모든 요소에서 그것을하고 무언가를 산출하거나 반환하지 않았습니다. 내장 기능이어야하고 순수한 파이썬으로 작성하는 것보다 빠르다고 생각하지만 목록에서 찾지 못했습니다. 방금 다른 이름을 불렀거나 여기서 요점을 놓치셨습니까?

어쩌면 내가 잘못했을 수도 있습니다. 파이썬에서 함수를 호출하면 비용이 많이 들며, 분명히 예제에는 좋지 않습니다. 함수는 out 루프가 아니라 많은 파이썬 코드 제안에서 이미 언급 한 것처럼 몸통에서 루프를 수행해야합니다.

def fn(*args):
    for x in args:
       dosomething

그러나 나는 foreach가 여전히 두 가지 사실을 기반으로 환영한다고 생각했습니다.

  1. 일반적인 경우 사람들은 성능에 신경 쓰지 않습니다.
  2. 때로는 API가 반복 가능한 객체를 허용하지 않아 소스를 다시 작성할 수 없습니다.


답변

내가 본 “foreach”(PHP, C #, …)의 모든 발생은 기본적으로 pythons “for”문과 동일합니다.

이것들은 다소 동등합니다 :

// PHP:
foreach ($array as $val) {
    print($val);
}

// C#
foreach (String val in array) {
    console.writeline(val);
}

// Python
for val in array:
    print(val)

그래서, 파이썬에는 “foreach”가 있습니다. “포”라고합니다.

당신이 설명하는 것은 “배열 맵”기능입니다. 이것은 파이썬에서 목록 이해 로 수행 할 수 있습니다 .

names = ['tom', 'john', 'simon']

namesCapitalized = [capitalize(n) for n in names]


답변

파이썬에는 그 자체foreach진술 이 없습니다 . 그것은이 언어에 내장 된 루프를.for

for element in iterable:
    operate(element)

정말로 원한다면 자신의 foreach기능을 정의 할 수 있습니다.

def foreach(function, iterable):
    for element in iterable:
        function(element)

부수적으로, for element in iterable구문은 파이썬의 영향 중 하나 인 ABC 프로그래밍 언어 에서 나옵니다 .


답변

다른 예 :

파이썬 Foreach 루프 :

array = ['a', 'b']
for value in array:
    print(value)
    # a
    # b

파이썬 포 루프 :

array = ['a', 'b']
for index in range(len(array)):
    print("index: %s | value: %s" % (index, array[index]))
    # index: 0 | value: a
    # index: 1 | value: b


답변

map 질문에 언급 된 상황에 사용될 수 있습니다.

예 :

map(len, ['abcd','abc', 'a']) # 4 3 1

여러 개의 인수를 취하는 함수의 경우 더 많은 인수를 맵핑 할 수 있습니다.

map(pow, [2, 3], [4,2]) # 16 9

파이썬 2.x의 목록과 파이썬 3의 반복자를 반환합니다.

함수가 여러 인수를 사용하고 인수가 이미 튜플 (또는 python 2.6 이후의 반복 가능) 형식 인 경우을 사용할 수 있습니다 itertools.starmap. (당신이 찾고있는 것과 매우 유사한 구문을 가지고 있습니다). 반복자를 반환합니다.

예 :

for num in starmap(pow, [(2,3), (3,2)]):
    print(num)

우리에게 8과 9를 제공합니다


답변

이것은 파이썬 3에서 foreach를 수행합니다.

test = [0,1,2,3,4,5,6,7,8,"test"]

for fetch in test:
    print(fetch)


답변

예, for 루프와 동일한 구문을 사용하지만

for x in ['a', 'b']: print(x)


답변

내가 당신을 올바르게 이해했다면, 당신이 ‘func’함수를 가지고 있다면 func (item)이 true를 반환하면 목록의 각 항목을 확인하고 싶다는 것을 의미합니다. 당신이 모두에게 진실하다면, 무언가를하십시오.

‘all’을 사용할 수 있습니다.

예를 들어 : 목록에서 0-10 범위의 모든 소수를 얻으려고합니다.

from math import sqrt
primes = [x for x in range(10) if x > 2 and all(x % i !=0 for i in range(2, int(sqrt(x)) + 1))]