programing

Python foreach 등가물

minecode 2022. 12. 20. 21:52
반응형

Python foreach 등가물

Python에 뛰어들고 있는데 Foreach 반복에 대해 질문이 있습니다.Python은 처음이고 C#에 경험이 있습니다.그래서 저는 Python에 제 컬렉션에 있는 모든 아이템에 대해 같은 기능을 반복할 수 있는지 궁금합니다.

pets = ['cat', 'dog', 'fish']
marks = [ 5, 4, 3, 2, 1]

뭐 이런 거.

그럼요. 루프는 A죠.

for f in pets:
    print f

다음과 같이 합니다.

for pet in pets :
  print(pet)

사실 Python은 foreach 스타일만 가지고 있습니다.for루프

이것을 관찰하는 것도 흥미롭다.

시퀀스의 인덱스에 대해 반복하기 위해range()그리고.len()다음과 같습니다.

a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
  print(i, a[i])

산출량

0 Mary
1 had
2 a
3 little
4 lamb

편집 #1: 대체 방법:

시퀀스를 루프할 때 위치 인덱스와 해당 값을 동시에 검색할 수 있습니다.enumerate()기능.

for i, v in enumerate(['tic', 'tac', 'toe']):
  print(i, v)

산출량

0 tic
1 tac
2 toe

갱신된 답변에 대해서는forEachPython에서 쉽게 기능:

def forEach(list, function):
    for i, v in enumerate(list):
        function(v, i, list)

또, 이것을,map,reduce,filter다른 언어 또는 우선 순위에서 가져온 기타 어레이 기능.루프는 충분히 빠르지만 보일러 판은 더 길다.forEach또는 다른 기능을 사용합니다.또한 목록에 직접 호출할 수 있도록 클래스에 대한 로컬 포인터를 사용하여 이러한 함수를 포함하도록 목록을 확장할 수도 있습니다.

위의 답변은 유효하지만 dict {key:value}를 반복하는 경우에는 다음과 같은 방법을 사용합니다.

for key, value in Dictionary.items():
    print(key, value)

따라서 사전의 모든 키와 값을 문자열화하는 등의 작업을 수행할 경우 다음을 수행합니다.

stringified_dictionary = {}
for key, value in Dictionary.items():
    stringified_dictionary.update({str(key): str(value)})
return stringified_dictionary

이렇게 하면 이런 유형의 반복을 적용할 때 불규칙한 동작을 일으킬 수 있는 변환 문제를 피할 수 있습니다.

dict의 경우 for 루프를 사용하여 반복할 수 있습니다.index,key그리고.value:

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##

foreachconstruct는 불행히도 컬렉션에 고유한 것이 아니라 컬렉션 외부에 있습니다.결과는 두 가지입니다.

  • 쇠사슬에 묶을 수 없다
  • 관용어인 비단뱀으로 된 두 줄이 필요합니다.

Python은 true를 지원하지 않습니다.foreach직접 소장하고 있습니다.예를 들면 다음과 같습니다.

myList.foreach( a => print(a)).map( lambda x:  x*2)

하지만 비단뱀은 지원하지 않습니다.python의 이 기능 및 기타 기능 누락에 대한 부분 수정은 다양한 서드파티 라이브러리에서 제공되고 있습니다.이 라이브러리에는 필자를 도운 것도 포함되어 있습니다.https://pypi.org/project/infixpy/를 참조하십시오.

이 방법은 효과가 있었습니다.

def smallest_missing_positive_integer(A):
A.sort()
N = len(A)

now = A[0]
for i in range(1, N, 1):
  next = A[i]
  
  #check if there is no gap between 2 numbers and if positive
  # "now + 1" is the "gap"
  if (next > now + 1):
    if now + 1 > 0:
      return now + 1 #return the gap
  now = next
    
return max(1, A[N-1] + 1) #if there is no positive number returns 1, otherwise the end of A+1

언급URL : https://stackoverflow.com/questions/40346498/python-foreach-equivalent

반응형