2016-12-06 7 views
0

안녕하십니까. 다음 두 목록이 있습니다. 기본적으로 목록의 문자열 중 'wrong'가 'old'에있는 경우 세 번째 업데이트 목록을 가져 오려고합니다. 그것을 포함하는 문자열의 전체 라인을 걸러 낸다. 즉, 업데이트 된 목록을 '새 목록'과 동일하게하려고합니다.다른 문자열 목록에서 문자열 검색 및 제거

wrong = ['top up','national call'] 
old = ['Hi Whats with ','hola man top up','binga dingo','on a national call'] 
new = ['Hi Whats with', 'binga dingo'] 

답변

2

당신은 filter 사용할 수 있습니다

>>> list(filter(lambda x:not any(w in x for w in wrong), old)) 
['Hi Whats with ', 'binga dingo'] 

또는, list comprehension,

>>> [i for i in old if not any(x in i for x in wrong)] 
['Hi Whats with ', 'binga dingo'] 

을 편안하지 않은 경우 그 중 하나가 같은 루프 기반 솔루션에 대한 간단한을 사용하여 아래 :

>>> result = [] 
>>> for i in old: 
...  for x in wrong: 
...   if x in i: 
...    break 
...  else: 
...   result.append(i) 
... 
>>> result 
['Hi Whats with ', 'binga dingo'] 
0
>>> wrong = ['top up','national call'] 
>>> old = ['Hi Whats with ','hola man top up','binga dingo','on a national call'] 
>>> [i for i in old if all(x not in i for x in wrong)] 
['Hi Whats with ', 'binga dingo'] 
>>>