2017-05-02 2 views
1

친구, 아래 두 가지 목록을 빼는 데 도움이 필요합니다. 이에 대한 친절한 지원에 감사드립니다.파이썬에서 두리스트를 빼는 방법

ListA=['a','b','b','b','c','c','d','e','f','f','g','h'] 
ListB=['a','b','c','d','e','f','f','g'] 

대답 내가 여기서 listc

Listc=['b','b','c','h'] 

내가 세트로이 시도으로 필요하지만, 내가 위의 예제의

listC=[set(listA) - set(listB)] 

대답 아래의 예를 expected.Tried로 대답을받지 않습니다 be

[ 'h']

나를 도와 줄 수있는 분께 감사드립니다.

당신은 목록을 반복하는이 목록의 이해를 사용할 수 있습니다

답변

1

ListB에서 항목을 제거하는 경우 :

>>> ListA=['a','b','b','b','c','c','d','e','f','f','g','h'] 
>>> ListB=['a','b','c','d','e','f','f','g'] 
>>> 
>>> [i for i in ListA if i not in ListB or ListB.remove(i)] 
['b', 'b', 'c', 'h'] 

때문에 생성의 오버 헤드, 목록을 작성하지 않는 지능형리스트를 사용하여 확장 목록, 목록 내포가 이전 루프보다 빠르면 위 목록의 내용은 다음과 같습니다.

r=[] 
for i in ListA: 
    if i in ListB: 
     ListB.remove(i) 
    else: 
     r.append(i) 
print(r) 
+0

대단히 감사합니다. 예상 한 내용입니다. 어떻게 작동하는지. 내가 파이썬 – Biginor

+0

@ Biginor에 처음 왔기 때문에 나는 내 대답을 편집하고있다. – McGrady

+0

감사의 말씀을 전하고 잘 설명해 주셔서 감사합니다. – Biginor

관련 문제