Appia의 IT세상

파이썬[Python] 리스트에서 중첩된 맴버 제거 하기 본문

Python/Python 응용

파이썬[Python] 리스트에서 중첩된 맴버 제거 하기

Appia 2020. 5. 15. 07:39
반응형

파이썬[Python] 리스트에서 중첩된 맴버 제거 하기

 

이번 포스팅은 파이썬[Python]의 컨테이너 자료형인 리스트에 대한 부분을 조금 다루어 볼까 합니다. 실제 많은 사용자들은 리스트를 매우 많이 사용합니다. 사용하기가 간단하고, 접근성이 매우 쉽기 때문이죠. 사용하다보면, 많은 리스트들을 생성하고, 이를 토대로 다양한 부분들에 대한 시도가 이루어집니다. 

 

이번 포스팅에서는 리스트내에서 중첩된 부분을 제거하는 방법에 대해서 살펴보겠습니다. 

 

리스트에서 중첩된 부분 제거 하기 

한개의 리스트를 선언하고, 그 안에서 중첩된 부분들이 존재하는 것을 지우는 방법에 대해서 살펴보겠습니다. 간단하게 다음 부분을 보겠습니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>>l1 = [124125689]
 
>>>l1
 
[124125689]
 
>>>l2 = []
 
>>>for i in l1 : 
 
...        if i not in l2:
 
...            l2.append(i)
 
>>>l2
 
[1245689]
cs

 

흔히들 이와 같이 작업을 진행합니다. 즉 2개의 리스트를 생성하고, 다른 한개로 객체를 옮깁니다. 그러던 중 존재하는 객체가 존재한다면 그 부분을 버리는 형태입니다. 가장 쉽지만 반복을 해야하고 하니, 그닥 썩 효율성이 있다고 할 수는 없습니다. 

이제 좀 이런 부분에 손을 대본 사람들은 다음과 같은 방법을 사용합니다. 

1
2
3
4
5
6
7
8
9
>>>l1 = [124125689]
 
>>>l1
 
[124125689]
 
>>>list(set(l1))
 
[1245689]
cs

 

이와 같은 형태는 리스트를 set 형태로 변경합니다. set의 순서가 없습니다. 하지만, 숫자의 경우 자동 정렬을 합니다. 즉 다음과 같은 부분을 한번 살펴보겠습니다. 

1
2
3
4
5
>>>l1 = [,1,2,3,1,2,5,6,8,9,3]
 
>>>set(l1)
 
{1,2,3,4,5,6,8,9}
cs

이와 같이 set 자체가 숫자을 정렬하고, 중복된 숫자는 제거해줍니다. 이를 바탕으로 다시 리스트로 전환하여 위와 같이 중첩된 부분들을 제거할 수 있습니다. 

그럼 문자의 경우도 한번 살펴보겠습니다. 간단히 다음 부분을 보겠습니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
>>>t1=['a','b','c','a','b','d']
 
>>>t1
 
['a''b''c''a''b''d']
 
>>>set(t1)
 
{'c''d''a''b'}
 
>>>list(set(t1))
 
['c''d''a''b']
cs

문자도 동일하게 다음과 같이 적용이 됩니다. 단 문자의 경우, 순서에 대한 정렬이 되지 않습니다. 이 부분에 대해서 다음과 같이 부분을 추가해 주시면 됩니다. 

1
2
3
4
5
6
7
>>>t2=list(set(t1))
 
>>>t2.sorted()
 
>>>t2
 
['a''b''c''d']
cs

 

생각보다 간단합니다. 하지만, 일부러 중복되는 부분이 존재하는 하는 경우도 있으니 사용시에 주의가 필요로 합니다. 리스트 관련된 부분을 찾다보면 많은 활용할 수 있는 부분이 있습니다. 예전에 올렸던 2개의 리스트 비교 방법등을 참조하시면 조금 더 도움이 되실거라 생각합니다. 

 

 

파이썬[Python] 020 두개의 리스트(List) 비교 방법

오늘은 파이썬에서 가장 많이 사용하는 리스트를 비교하는 방법에 대해서 살펴보고자 합니다. 다양한 방법중에 가장 접근하기 좋은 3가지 방법들로 관련해서 설명하고자 합니다. 리스트에서는 내용물 뿌만 아니라..

appia.tistory.com

 

오늘은 리스트(list)내에서 중첩된 맴버 제거하는 방법에 대해서 살펴봤습니다. 혹시 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨 주시길 바랍니다. 감사합니다. 

반응형
Comments