IT TIP

내용을 기반으로 문자열 목록 필터링

itqueen 2020. 10. 23. 19:48
반응형

내용을 기반으로 문자열 목록 필터링


list가 주어지면 ['a','ab','abc','bac']문자열이있는 목록을 계산하고 싶습니다 'ab'. 즉 결과는 ['ab','abc']. 파이썬에서 어떻게 할 수 있습니까?


이 간단한 필터링은 Python을 사용하여 여러 방법으로 달성 할 수 있습니다. 가장 좋은 방법은 다음과 같이 "목록 이해"를 사용하는 것입니다.

>>> lst = ['a', 'ab', 'abc', 'bac']
>>> res = [k for k in lst if 'ab' in k]
>>> res
['ab', 'abc']
>>> 

또 다른 방법은 filter함수 를 사용하는 것입니다.

>>> filter(lambda k: 'ab' in k, lst)
['ab', 'abc']
>>> 

[x for x in L if 'ab' in x]

# To support matches from the beginning, not any matches:

items = ['a', 'ab', 'abc', 'bac']
prefix = 'ab'

filter(lambda x: x.startswith(prefix), items)

대화 형 셸에서 빠르게 시도했습니다.

>>> l = ['a', 'ab', 'abc', 'bac']
>>> [x for x in l if 'ab' in x]
['ab', 'abc']
>>>

왜 이것이 작동합니까? in연산자 는 "의 하위 문자열"을 의미하는 문자열에 대해 정의 되기 때문 입니다.

또한 위에서 사용 된 목록 이해 구문 을 사용하는 대신 루프 작성을 고려할 수 있습니다 .

l = ['a', 'ab', 'abc', 'bac']
result = []
for s in l:
   if 'ab' in s:
       result.append(s)

mylist = ['a', 'ab', 'abc']
assert 'ab' in mylist

참고 URL : https://stackoverflow.com/questions/2152898/filtering-a-list-of-strings-based-on-contents

반응형