python - 지정 - 파이썬 1 부터 10 까지 더하기



파이썬 3에서 'foreach'함수가 있습니까? (5)

내가 자바 스크립트에서 할 수있는 상황을 만났을 때 foreach 함수가 있으면 편리하다고 생각합니다. foreach는 아래에 설명 된 함수를 의미합니다.

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

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

어쩌면 내가 틀렸어. 파이썬에서 함수를 호출하는 것이 비용이 많이 들지만,이 예제에서는 좋은 연습이 아니다. 외부 루프가 아닌 함수는 파이썬의 코드 제안에서 이미 언급 한 것과 같이 몸체 측면에서 루프를 수행해야합니다.

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

하지만 나는 foreach가 여전히 두 가지 사실에 기초하고 있다고 생각했다.

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

https://src-bin.com


Answer #1

다른 예 :

파이썬 Foreach 루프 :

for val in array:
    print(val)

루프를위한 파이썬 :

for index in range(len(array)):
    print(array[index])
    index+= 1

Answer #2

만약 내가 당신을 이해했다면, 당신은 'func'라는 함수가 있다면, func (item)이 true를 반환하면리스트의 각 항목을 검사하기를 원할 것입니다; 만약 당신이 모든 것을 위해 사실이된다면, 뭔가를하십시오.

'모두'를 사용할 수 있습니다.

예를 들어, 목록에서 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))]

Answer #3

파이썬에는 foreach자체 가 없습니다. 그것은 언어에 내장 된 루프를 가지고 있습니다.

for element in iterable:
    operate(element)

정말로 원한다면 자신의 foreach 함수를 정의 할 수 있습니다.

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

부수적으로 for element in iterable 구문의 for element in iterable 는 ABC 프로그래밍 언어에서 비롯됩니다. 언어는 Python의 영향 중 하나입니다.


Answer #4

필자가 보았던 모든 "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"가 있습니다. 그것은 "for"라고 불립니다.

당신이 설명하는 것은 "배열 맵"기능입니다. 이것은 파이썬에서 리스트 comprehensions 로 할 수 있습니다 :

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

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

Answer #5

이 기사를보십시오 . NumPy 1.6에서 소개 된 numpy 패키지의 iterator 객체 nditer 는 하나 이상의 배열의 모든 요소를 ​​체계적으로 방문하는 많은 유연한 방법을 제공합니다.

예:

import random
import numpy as np

ptrs = np.int32([[0, 0], [400, 0], [0, 400], [400, 400]])

for ptr in np.nditer(ptrs, op_flags=['readwrite']):
    # apply random shift on 1 for each element of the matrix
    ptr += random.choice([-1, 1])

print(ptrs)

d:\>python nditer.py
[[ -1   1]
 [399  -1]
 [  1 399]
 [399 401]]




foreach