python python3 파이썬리스트 이해력과 'not in'




python list for (4)

[item  for item  in t if item not in s]

나는 파이썬으로 시작하고 있으며, 현재 목록의 독해에 대해서 배우고있다. 그래서 이것은 정말로 이상하게 들릴 것이다.

질문 : 목록 이해력을 사용하여 s 에서 찾을 수없는 t 의 요소 목록을 만들 수 있습니까?

나는 다음을 시도했고 그것은 나에게 오류를 주었다.

>>> t = [1, 2, 3, 4, 5]
>>> s = [1, 3, 5]
>>>[t for t not in s]

[t for t not in s]
           ^
SyntaxError: invalid syntax

Answer #1

이 시도:

[x for x in t if x not in s]

list comprehensions에 if 문을 중첩시킬 수 있습니다. 코드가하는 일에 대해 더 명확한 직감으로 조건의 긴 체인을 얻으려면이 식별자를 사용해보십시오.

my_list = [(x,a)
           for x in t
           if x not in s
           if x > 0
           for a in y
           ...]

만나다?


Answer #2

효율을 높이려면 세트를 사용하십시오.

mySet = set(s)
result = [x for x in t if x not in mySet]

집합의 구성원을 테스트하는 것은 O (1)이지만 목록의 구성원을 테스트하는 것은 O (n)입니다.


Answer #3

목록 통합에 대해 묻는 것을 알고 있지만 이 특정 문제는 set 사용하여 더 잘 수행 될 것이라고 지적하고 싶습니다. 원하는 결과는 set ts 의 차이입니다.

>>> t = {1,2,3,4,5}
>>> s = {1,3,5}
>>>
>>> t - s
set([2, 4])
>>>
>>> t.difference(s)
set([2, 4])

파이썬이 제공하는 도구에 대한 지식을 넓히기를 희망합니다.







python-2.x