>  기사  >  백엔드 개발  >  코드를 더욱 효율적으로 만드는 네 가지 Python 연역적 개발 기술

코드를 더욱 효율적으로 만드는 네 가지 Python 연역적 개발 기술

WBOY
WBOY앞으로
2023-04-22 09:40:081227검색

데이터 과학의 경우 Python은 일반적으로 데이터 처리 및 변환에 널리 사용됩니다. 데이터 처리를 더욱 유연하게 만드는 강력한 데이터 구조 처리 기능을 제공합니다. 여기서 "유연성"은 무엇을 의미하나요? Python에서 동일한 결과를 얻으려면 항상 다양한 방법이 있으므로 사용하기 쉽고 시간을 절약하며 더 나은 제어 기능을 제공하는 방법을 선택해야 합니다.

이 모든 방법을 익히는 것은 불가능합니다. 따라서 모든 유형의 데이터로 작업할 때 알아야 할 4가지 Python 팁 목록은 다음과 같습니다.

코드를 더욱 효율적으로 만드는 네 가지 Python 연역적 개발 기술List Comprehension은 목록을 생성하는 우아하고 가장 Python 친화적인 방법입니다. for 루프 및 if 문과 비교하여 목록 내포는 기존 목록의 값을 기반으로 새 목록을 생성하는 구문이 훨씬 더 짧습니다. 그러면 이 기능이 어떻게 목록의 복사본을 가져오는지 살펴보겠습니다.

목록 이해를 사용하여 목록 복사

때로는 기존 목록의 복사본을 만들어야 할 때가 있습니다. 가장 간단한 대답은 .copy()입니다. 이를 통해 한 목록의 내용을 다른(새) 목록으로 복사할 수 있습니다.

예를 들어, 원래_목록의 정수 목록입니다.

original_list = [10,11,20,22,30,34]

이 목록은 .copy() 메서드를 사용하여 간단히 복사할 수 있습니다.

duplicated_list = original_list.copy()

목록 이해를 사용하여 정확히 동일한 출력을 얻을 수 있습니다. 목록 복사는 목록 이해를 이해하는 좋은 예입니다.

아래 코드를 보세요.

duplicated_list = [item for item in original_list]

목록을 복사할 때 List Comprehension을 사용하는 것이 더 좋다는 것이 아니라, List Comprehension의 작업 방식을 소개하기에 이 사례가 가장 좋다는 뜻입니다.

다음으로, 목록의 각 요소에 대해 수학적 연산을 수행할 때 목록 이해가 어떻게 삶을 쉽게 만드는지 살펴보겠습니다.

목록의 요소 곱하기

가장 간단하고 직접적인 곱셈 방법은 *

인 곱셈 연산자를 사용하는 것입니다. 예를 들어 목록의 각 항목에 스칼라(예: 숫자 5)를 곱하려고 합니다. . 목록의 복사본이 5개 생성되므로 여기서는 절대로 사용할 수 없습니다.

이 시나리오에서 가장 좋은 대답은 아래와 같이 목록 이해입니다.

original_list = [10,11,20,22,30,34]
 multiplied_list = [item*5 for item in original_list]
 
 # Output
 [50, 55, 100, 110, 150, 170]

여기서의 연산은 숫자를 곱하는 것에만 국한되지 않습니다. 원본 목록의 각 요소에 대해 복잡한 작업을 수행할 수 있습니다.

예를 들어, 각 항의 제곱근의 세제곱을 계산한다고 가정하면 한 줄로 풀 수 있습니다.

multiplied_list = [math.sqrt(item)**3 for item in original_list]
 
 # Output
 [31.6227766016838,
36.4828726939094,
89.4427190999916,
103.18914671611546,
164.31676725154983,
198.25236442474025]

숫자의 제곱근을 계산하는 데 사용되는 sqrt 함수는 수학 라이브러리에 속하므로 이 경우 사용하기 전에 가져와야 합니다.

위에 표시된 내장 함수와 유사하게 목록의 각 요소에 사용자 정의 함수를 사용할 수도 있습니다.

예를 들어 아래와 같은 간단한 함수입니다.

def simple_function(item):
item1 = item*10
item2 = item*11
return math.sqrt(item1**2 + item2**2)

이 사용자 정의 함수를 목록의 각 항목에 적용할 수 있습니다.

multiplied_list = [simple_function(item) for item in original_list]
 
 # Output
 [148.66068747318505,
163.52675622050356,
297.3213749463701,
327.0535124410071,
445.9820624195552,
505.4463374088292]

List comprehension은 실제 시나리오에서 훨씬 더 유용합니다. 일반적으로 분석 작업에서는 nan 요소 제거와 같이 목록에서 특정 유형의 요소를 삭제해야 합니다. 목록 이해는 이러한 작업을 위한 완벽한 도구입니다.

목록에서 요소 제거

특정 기준에 따라 데이터를 필터링하는 것은 필요한 데이터 세트를 선택하는 일반적인 작업 중 하나이며, 목록 이해에도 동일한 논리가 사용됩니다.

아래에 언급된 숫자 목록이 있다고 가정해보세요.

original_list = [10, 22, -43, 0, 34, -11, -12, -0.1, 1]

이 목록에서 양수 값만 유지하고 싶습니다. 따라서 논리적으로 조건부 항목 > 0에 대해 TRUE로 평가되는 항목만 유지하려고 합니다.

new_list = [item for item in original_list if item > 0]
 
 # Output
 [10, 22, 34, 1]

if 절은 음수 값을 삭제하는 데 사용됩니다. if 절을 사용하여 조건을 적용하면 목록에서 항목을 제거할 수 있습니다.

예를 들어 제곱이 200보다 작은 모든 항을 삭제하려면 아래와 같이 목록 합성에서 조건항 **2 > 200을 언급하기만 하면 됩니다.

new_list = [item for item in original_list if item**2 > 200]
 
 # Output
 [22, -43, 34]

실제 데이터 세트를 다룰 때 목록 항목 필터링 조건은 훨씬 더 복잡할 수 있지만 이 방법은 빠르고 이해하기 쉽습니다.

dict()를 사용하여 두 목록을 사전 키-값 쌍으로 변환합니다.

두 목록의 값에서 사전을 만들어야 하는 경우가 있습니다. 하나씩 입력하는 대신 사전을 만드는 우아하고 간결한 방법인 사전 이해(

dictionary

comprehension)를 사용할 수 있습니다. 리스트 이해와 정확히 동일하게 작동하지만 차이점은 다음과 같습니다. List Comprehension을 만들려면 모든 것을 []와 같은 대괄호로 묶는 반면, Dictionary Comprehension에서는 모든 것을 {}와 같은 중괄호로 묶습니다.

아래와 같이 필드와 세부정보라는 두 개의 목록이 있다고 가정합니다.

fields = [‘name’, ‘country’, ‘age’, ‘gender’]
 details = [‘pablo’, ‘Mexico’, 30, ‘Male’]

간단한 방법은 이렇게 사전 독해를 사용하는 것입니다. -

new_dict = {key: value for key, value in zip(fields, details)}
 
 # Output
 {'name': 'pablo', 'country': 'Mexico', 'age': 30, 'gender': 'Male'}

여기서 이해해야 할 중요한 것은 zip 기능이 어떻게 작동하는지입니다.

Python에서 zip 함수는 문자열, 목록 또는 사전과 같은 반복 가능한 개체를 입력으로 받아들이고 이를 튜플로 집계하여 반환합니다.

이 경우 zip은 목록 필드와 세부정보에서 각 항목의 쌍을 구성했습니다. 사전 이해에서 키:값을 사용할 때 이 튜플을 개별 키-값 쌍으로 압축을 풀면 됩니다.

Python에 내장된 dict() 생성자를 사용하면(사전 생성을 위해) dict()가 사전 이해보다 최소 1.3배 빠르기 때문에 프로세스가 더욱 빨라집니다

따라서 이 생성자를 훨씬 간단한 구문을 갖는 zip() 함수와 함께 사용해야 합니다 - dict(zip(fields, Details))

요약

처음에 언급했듯이 Python은 매우 유연합니다. 동일한 결과를 얻는 방법은 여러 가지가 있습니다. 작업의 복잡성에 따라 이를 달성하는 가장 좋은 방법을 선택해야 합니다.

이 글이 도움이 되셨으면 좋겠습니다. 이 글에서 언급한 것과 동일한 작업을 수행할 수 있는 다른 방법이 있다면 알려주시기 바랍니다.

위 내용은 코드를 더욱 효율적으로 만드는 네 가지 Python 연역적 개발 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제