>  기사  >  백엔드 개발  >  Python에서 시퀀스의 요소를 필터링하는 방법

Python에서 시퀀스의 요소를 필터링하는 방법

不言
不言앞으로
2018-10-22 17:20:482422검색

이 기사의 내용은 Python이 시퀀스의 요소를 필터링하는 방법에 대한 것입니다. 이는 특정 참조 값을 가지고 있으므로 도움이 될 수 있습니다.

1. 요구 사항

시퀀스에는 일부 데이터가 포함되어 있으며 특정 표준에 따라 값을 추출하거나 시퀀스를 삭제해야 합니다. .

2. Solution

일반적으로 가장 간단한 방법은 목록 이해를 사용하는 것입니다.

예:

myList=[1,4,-5,10,-7,2,3,-1]
print([n for n in myList if n>0])
print([n for n in myList if n<0])

Result:

[1, 4, 10, 2, 3]
[-5, -7, -1]

목록 이해 사용의 한 가지 잠재적인 단점은 원래 입력이 매우 그렇게 하면 큰 결과를 초래할 수 있습니다. 이것이 고려해야 할 문제인 경우 생성기 표현식을 사용하여 필터링된 결과를 반복적으로 생성할 수 있습니다. 예를 들어, 기준은 단순히 목록 이해 또는 생성기 표현식으로 표현할 수 없습니다. 예를 들어, 심사 프로세스에 예외 처리 또는 기타 복잡한 세부 사항이 포함되어 있다고 가정합니다. 이를 바탕으로 필터링 로직을 처리하는 코드를 별도의 함수에 넣은 후 내장된 filter() 함수를 사용하여 처리하면 됩니다.

myList=[1,4,-5,10,-7,2,3,-1]
pos=(n for n in myList if n >0)
for x in pos:
    print(x)

Result :

1
4
10
2
3
#🎜🎜 #filter()는 반복자를 생성하므로 결과를 목록으로 원할 경우 예제와 같이 list()를 포함해야 합니다.

3. 분석

목록 이해 및 생성기 표현식은 데이터를 필터링하는 가장 간단하고 직접적인 방법인 경우가 많습니다. 또한 동시에 데이터를 변환하는 기능도 있습니다. 예:

values=['1','2','-3','-','4','N/A','5']
def is_int(val):
    try:
        x=int(val)
        return True
    except ValueError:
        return False

ivals=list(filter(is_int,values))
print(ivals)
결과:
['1', '2', '-3', '4', '5']
데이터 필터링과 관련하여 기준에 맞지 않는 값을 버리는 대신 새로운 값으로 바꾸는 상황이 하나 있습니다. 그들을. 예를 들어. 양의 정수를 찾는 것 외에도 지정된 범위 내에서 요구 사항을 충족하지 않는 값을 바꾸려고 합니다. 종종 이는 필터 기준을 다음과 같이 조건식으로 이동하여 쉽게 수행할 수 있습니다. 필터 도구는 itertools.compress()이며, 이는 반복 가능 및 부울 선택기 시퀀스를 입력으로 허용합니다. 출력 시 해당 부울 선택기에서 True인 모든 반복 가능한 객체 요소를 제공합니다. 이는 한 시퀀스의 필터 결과를 다른 관련 시퀀스에 적용하려는 경우에 유용합니다.

예:

import math
myList=[1,4,-5,10,-7,2,3,-1]
print([math.sqrt(n) for n in myList if n>0])
결과:

[1.0, 2.0, 3.1622776601683795, 1.4142135623730951, 1.7320508075688772]
여기서 핵심은 먼저 어떤 요소가 조건을 충족할 수 있는지 나타내는 부울 시퀀스를 만드는 것입니다. 그런 다음 압축() 함수는 부울 값 True를 만족하는 해당 요소를 선택합니다.

filter() 함수와 유사하게, 압축()은 일반적인 상황에서 반복자를 반환합니다. 따라서 필요한 경우 list()를 사용하여 결과를 목록으로 변환해야 합니다.

위 내용은 Python에서 시퀀스의 요소를 필터링하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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