이 기사에서 제공하는 것은 데이터 변환과 변환을 동시에 수행하는 Python의 방법에 대한 소개 및 분석입니다(예제 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. 도움이 되었습니다.
1. 요구 사항
sum(), min(), max() 등의 변환 함수를 호출해야 하지만 먼저 데이터를 변환하거나 필터링해야 합니다
2. 솔루션
데이터 스케일링과 변환을 결합하는 매우 우아한 방법: 함수 매개변수에 생성기 표현식을 사용합니다.
예 1: 제곱합 계산:
nums=[1,2,3] s=sum(x*x for x in nums) print(s)
결과:
14
예 2: .py 파일이 지정된 디렉터리에 있는지 확인
import os filename=os.path.dirname(os.path.abspath(__file__)) files1=os.listdir(filename+"/image") files2=os.listdir(filename) #any表示该iterable只要存在一个满足条件的,欧返回True,否则才返回False if any(name.endswith('.py') for name in files1): print('存在py文件') else: print('不存在py文件') #any表示该iterable只要存在一个满足条件的,欧返回True,否则才返回False if any(name.endswith('.py') for name in files2): print('存在py文件') else: print('不存在py文件')
실행 결과:
不存在py文件 存在py文件
예 3: 최소값 가져오기 기반
marks=[ {'age':18,'money':100}, {'age':19,'money':500}, {'age':17,'money':900}, {'age':20,'money':1000}, ] min_mark=min(m['age'] for m in marks) print(min_mark)
결과:
17
3. 분석
이 솔루션은 생성기 표현식을 함수에 별도의 인수로 전달할 때(예: 기호를 재사용할 필요 없음) 구문의 미묘함을 보여줍니다. . 예를 들어, 다음 두 코드 줄은 같은 의미입니다.
s=sum((x*x for x in nums)) s=sum(x*x for x in nums)
먼저 임시 테이블을 생성하는 것과 비교할 때 생성기를 매개변수로 사용하는 것이 일반적으로 더 효율적이고 우아합니다. 예를 들어 생성기 표현식을 사용하지 않는 경우 다음 방법을 사용하여 제곱합을 계산하는 것을 고려해 보세요.
nums=[1,2,3] s=sum([x*x for x in nums]) print(s)
이 방법도 작동하지만 추가 단계가 도입되고 추가 목록이 생성됩니다. 작은 목록의 경우. 문제가 되지 않지만 nums가 매우 크면 거대한 임시 데이터 구조가 생성되어 한 번만 사용되고 폐기됩니다.
Generator 기반 솔루션은 반복적인 방식으로 데이터를 변환하므로 메모리 사용이 훨씬 더 효율적입니다.
min() 및 max()와 같은 일부 특정 변환 함수는 주요 매개변수를 허용할 수 있으며 이는 생성기 사용을 선호할 때 유용합니다. 예를 들어, 위의 예[사전의 키를 기준으로 최소값을 취함]에서는 다음 대안을 고려할 수 있습니다.
min_mark=min(marks,key=lambda m:m['age'])
위 내용은 데이터 변환과 변환을 동시에 수행하는 Python의 방법 소개 및 분석(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!