파이썬 고급 함수 소개

26800 단어 python
이전 글에서, 나는 자바스크립트의 고급 함수에 대한 안내서를 만들어서, 처리 그룹 계산을 더욱 쉽게 했다.이 블로그에서, 나는 같은 일을 할 것이지만, 파이톤을 언어로 사용할 것이다.이 예시를 통해 파이톤에서 목록을 정렬하고 관리하는 것이 더 쉽다는 것을 알 수 있기를 바랍니다.
만약 자바스크립트 블로그 글을 읽는 것에 흥미가 있다면, 그것을 찾을 수 있을 것이다.

모조리
all 방법은 iterable를 매개 변수로 받아들이고 iterable의 모든 조건이 True일 때만 True를 되돌려줍니다.그렇지 않으면 False의 all 메서드를 반환합니다.
arr = [1, 2, 3, 4, 5]

all(i > 0 for i in arr)
=> True

all( i < 4 for i in arr)
=> False

필터
filter 방법은 조건에 맞는 목록에 있는 모든 요소의 새 목록을 되돌려줍니다.이 방법은 함수와iterable를 매개 변수로 받아들인다.단, 필터 방법은 목록이 아닌 필터 대상을 되돌려줍니다.따라서 필터 대상을 목록으로 변환해야 합니다.
arr = [1, 2, 3, 4, 5]

def filter_function(x):
  return x > 2

list(filter(filter_function, arr))
=> [3, 4, 5]

# Alternatively
list(filter(lambda x: x > 2, arr))
=> [3, 4, 5]
앞에 있는 필터는 작동할 수 있지만, 함수를 매개 변수로 입력해야 하기 때문에 약간 혼란스러울 수 있습니다.Python은 목록 이해(list comprehension)라는 강력한 기능을 제공하여 필터링할 때 더욱 광범위하게 사용된다.
arr = [1, 2, 3, 4 5]

[x for x in arr if x > 2]
=> [3, 4, 5]
사용 목록 이해는 더욱 영리하다고 여겨지므로 주로 사용해야 한다.그러나 만약 필터가 여러 단계의 과정을 필요로 한다면 필터 기능이 가장 좋은 선택이 될 수 있다.

다음
다음 방법은 조건을 만족시키는 목록의 첫 번째 요소를 되돌려줍니다.이것은 다른 언어의find 방법과 유사합니다.다음은iterable를 매개 변수로 받아들입니다.다음 예제를 참조하십시오.
arr = [1, 2, 3, 4, 5]

next(x for x in arr if x > 2)
=> 3
파이썬이 목록에서 요소를 찾을 수 없으면 StopIteration 예외가 발생합니다. 잘못 처리하면 프로그램이 붕괴될 수 있습니다.따라서 Python에서 기본 매개 변수를 지정할 수 있습니다.
arr = [1, 2, 3, 4, 5]

next(x for x in arr if x > 5)
=> StopIteration

next((x for x in arr if x > 5), None)
=> None
알림: 교체기를 괄호로 묶는 것을 잊지 마세요.그렇지 않으면 문법 오류가 발생할 수 있다.

포함
Python은 in 키워드를 사용하여 배열에 요소가 있는지 확인합니다.다음 예제를 참조하십시오.
arr = [1, 2, 3, 4, 5]

1 in arr
=> True

6 in arr
=> False

매 사람
배열의 모든 요소에 대한 작업을 수행하기 위해서, 파이톤은 for 순환을 사용합니다.다음 예제를 참조하십시오.
arr = [1, 2, 3, 4, 5]

for x in arr:
  print(f'Hello, I am {x}')
=> Hello, I am 1
Hello, I am 2
Hello, I am 3
Hello, I am 4
Hello, I am 5
x의 값을 바꾸면 원본 목록이 바뀌지 않는다는 것을 반드시 주의하십시오.
arr = [1, 2, 3, 4, 5]

for x in arr:
  x = x * 2

print(arr)
=> [1, 2, 3, 4, 5]
업데이트된 목록을 되돌릴 수 있는 방법이 있다.그러나 for 순환에 비해 맵은 더 좋은 선택입니다.for 순환은 목록의 모든 항목에 외부 작업을 수행하는 데 주로 사용됩니다.

지도.
map 방법은 함수로 변환된 모든 요소를 포함하는 새로운 목록을 되돌려줍니다.이 방법은 두 개의 인자를 받아들인다. 함수와iterable.Filter와 유사하게 맵 방법은 맵의 대상을 되돌려줍니다. 따라서 이 맵의 대상을 목록으로 변환해야 합니다.다음 예제를 참조하십시오.
arr = [1, 2, 3, 4, 5]
def square(x):
  return x * x

list(map(square, arr))
=> [1, 4, 9, 16, 25]

# Alternatively...
list(map(lambda x: x * x, arr))
그러나 필터링 방법처럼 목록 이해를 통해 이 문제를 해결할 수 있다.다음 예제를 참조하십시오.
arr = [1, 2, 3, 4, 5]

[x * x for x in arr]
=> [1, 4, 9, 16, 25]
마찬가지로 리스트 이해가 최선의 방법이며 구렁이 같다고 여겨진다

줄다
reduce 방법은 목록의 모든 값을 하나의 값으로 줄입니다.예를 들어, 목록의 합은 이 목록의 모든 요소를 받아들이고 값을 되돌려주기 때문에 가장 간단한 간략한 것으로 여겨질 수 있다.이런 방법은 감각적으로는 필터와 반사와 유사하지만 약간 복잡하다.reduce 방법은 두 개의 필수 매개 변수와 선택할 수 있는 매개 변수를 받아들인다.첫 번째 필수 매개 변수로서, Reduce 방법은 두 개의 매개 변수를 포함하는 방법을 받아들인다.이 내부 함수의 첫 번째 매개 변수는 누적기이고, 두 번째 매개 변수는 목록의 요소이다.이것이 내재된 방법의 전부다.reduce 방법의 두 번째 매개 변수는list이고 세 번째 매개 변수는 선택할 수 있는 start 매개 변수입니다.
또한 Reduce 함수는 Python 라이브러리functools가 필요하기 때문에 이 라이브러리를 가져오는 것을 잊지 마십시오.나는 이것이 사람을 곤혹스럽게 하는 것 같다는 것을 알고 있기 때문에 코드가 당신이 더욱 잘 이해하는 데 도움을 줄 수 있기를 바랍니다.
import functools

def square_reducer(x, y):
  return x * y

arr = [1, 2, 3, 4, 5]

functools.reduce(square_reducer, arr)
=> 120

# Alternatively
functools.reduce(lambda x, y: x * y, arr)
=> 120

functools.reduce(square_reducer, arr, 2)
=> 240

# Alternatively
functools.reduce(lambda x, y: x * y, arr, 2)
=> 240
첫 번째 Reduce 함수가 가장 간단합니다.우선, 우리는 첫 번째 원소에 들어가서, 그것을 누적기 (x) 에 넣는다.그리고 우리는 누적기에 두 번째 원소를 곱할 것이다.그러니까 1*2=2.우리의 누적기 값은 2이다.다음에 우리는 누적기 값을 세 번째 원소(2*3)에 곱할 것이다.우리가 얻은 값은 6이다.우리는 전체 진열을 완성할 때까지 계속했다.마지막으로, 이것이 바로 발생하고 있는 일이다.
1 * 2 * 3 * 4 * 5
=> 120
두 번째 Reduce 함수는 같은 일을 하지만 lambda 함수를 사용하기 때문에 Reducer 방법을 따로 설명할 필요가 없습니다.
세 번째 기능은 첫 번째 기능과 같지만, 누적기에서 2로 설정합니다.따라서 다음과 같습니다.
2 * 1 * 2 * 3 * 4 * 5
=> 240
네 번째는 세 번째와 같지만 lambda 함수를 사용합니다.

정렬
sort 방법은 목록의 새로운 정렬 버전을 되돌려줍니다.정렬 방법은 필수 매개 변수와 선택할 수 있는 두 개의 매개 변수 (reverse와 키) 를 받아들인다.첫 번째 매개변수는 목록입니다.reverse optional 매개 변수는 정렬된 목록을 반전시키고 키 optional 매개 변수는 목록 정렬의 기초 함수입니다.다음 예제를 참조하십시오.
arr = [2, 1, 5, 3, 4]

sorted(arr)
=> [1, 2, 3, 4, 5]

sorted(arr, reverse=True)
=> [5, 4, 3, 2, 1]

students = [
  {'name': 'Jimmy', 'age': 15},
  {'name': 'Hector', 'age': 18},
  {'name': 'Paige', 'age': 16}
]

sorted(students, key=lambda x: x['age'])
=> [{'name': 'Jimmy', 'age': 15}, {'name': 'Paige', 'age': 16}, {'name': 'Hector', 'age': 18}]

분 단위
min 방법은 Python 목록에서 최소값을 검색합니다.이 방법은 필수 매개 변수와 선택할 수 있는 세 개의 매개 변수를 받아들인다.필요한 매개 변수는iterable 자체입니다.또는 이 함수에 지속 매개 변수로 더 많은 대상을 추가할 수 있습니다.키(정렬 방법과 유사)를 사용하여 정렬하고 기본값을 지정할 수도 있다.다음 예제를 참조하십시오.
arr = [1, 2, 3, 4, 5]

min(arr)
=> 1

min(0, -2, 1, 8, 5)
=> -2

students = [
    {'name': 'Jimmy', 'age': 15},
    {'name': 'Hector', 'age': 18},
    {'name': 'Paige', 'age': 16}
]

min(students, key=lambda x: x['age'])
=> {'name': 'Jimmy', 'age': 15}

min([], default=0)
=> 0

맥스
최대치법은 최소치법과 같다.그러나,iterable에서 최대 값을 찾았습니다.다음 예제를 참조하십시오.
arr = [1, 2, 3, 4, 5]

max(arr)
=> 5

max(0, -2, 1, 8, 5)
=> 8

students = [
    {'name': 'Jimmy', 'age': 15},
    {'name': 'Hector', 'age': 18},
    {'name': 'Paige', 'age': 16}
]

max(students, key=lambda x: x['age'])
=> {'name': 'Hector', 'age': 18}

max([], default=100)
=> 100

결론
고급 함수는 매우 쓰기 좋아서, 만약 당신이 알고 있다면 많은 시간과 두통을 절약할 수 있을 것이다.나는 네가 이 방법들이 유용하고 사용하기 쉽다고 생각하기를 바란다.즐거운 코딩!

좋은 웹페이지 즐겨찾기