> 백엔드 개발 > 파이썬 튜토리얼 > 데이터 변환과 변환을 동시에 수행하는 Python의 방법 소개 및 분석(예제 포함)

데이터 변환과 변환을 동시에 수행하는 Python의 방법 소개 및 분석(예제 포함)

不言
풀어 주다: 2018-11-26 16:36:10
앞으로
2012명이 탐색했습니다.

이 기사에서 제공하는 것은 데이터 변환과 변환을 동시에 수행하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿