Programming

Python 리스트형 - 중복값을 제거하고 Unique List 만들기

IT오이시이 2023. 10. 11. 04:05
728x90

 

Python 리스트형  -  중복값을 제거하고 Unique List 만들기

리스트에 중복된 값을 제거하고 Unique 값을 저장하는 방법 입니다.
 

리스트형의 특징과 활용

1. 다양한 데이터를 저장 - 변수형 관계 없음
2. 순서가 있음  - 입력되는 순서대로 내부 index로 관리됨
3. 가변성  -  리스트의 내용을 변경할 수 있음 (입력,수정,삭제)
4. 길이를 가짐 - 리스트는 길이 요소를 가짐   len()
5. 슬라이싱 - 리스트에서 일부분을 추출하려면 슬라이싱(분리)하여 사용 가능
6. 반복하여 처리 가능  - 리스트형을 반복문에서 쉽게 사용
 

리스트형의 Unique List 값 저장


1.  .set()을 이용한 Unique 리스트 

리스트는 입력 값의 종류에 상관없이 순서대로 저장하므로 값의 중복이 발생 됩니다. 이러한 리스트에 set()를 이용해서 중복된 값을 제거하고 Unique 값을 저장하는 방법입니다. sorted()는 리스트 값을 정렬 합니다. 아래 키값들은 6 +6 + 7  + 4 = 23 개의 키 인데 key4의 'c1', 'c6'  두개의 중복된 값이 빠지고 21개의 리스트로 만들어 집니다. sorted()로 순서대로 정렬해서 중복값이 있는지 확인 합니다.

print (" *************************** ")
print (" make list data using set() ")
print (" *************************** ")

key1 = ['a', 'a2', 'a3', 'a4', 'a5','a6']
key2 = ['b', 'b2', 'b3', 'b4', 'b5','b6']
key3 = ['c', 'c1', 'c2', 'c3', 'c4','c5', 'c6']
key4 = ['a1','b1','c1', 'c6' ]

# set()을 이용하여 리스트 데이터를 합친다. 
# key4는 두개의 중복된 값을 가지고 있습니다.
key_words = set(key1 + key2 + key3 + key4)


# 변수 길이 확인하면 중복된 리스트를 확인 할 수 있습니다.
print( len(key1), len(key2), len(key3), len(key4) )
print( len(key_words) )

# 출력 : 6 6 7 4 
# 출력 : 21


# key_words의 값을 정렬하여 중복값이 있는지 확인합니다.
key_sorted = sorted(key_words)

print('set -> key_words:', key_words, len(key_words))
print('sorted -> key_sorted:', key_sorted, len(key_words))

# 출력: set -> key_words: {'a1', 'a6', 'c5', 'a4', 'b3', 'a5', 'a3', 'c6', 'b5', 'c3', 'b1', 'b2', 'c4', 'a', 'b4', 'c1', 'c2', 'b6', 'b', 'c', 'a2'} 21
# 출력: sorted -> key_sorted: ['a', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'b', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'c', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6'] 21

 
 

2. extend() 리스트를 만들면 값의 중복이 있습니다.

 
set()을 이용하여 다시 리스트를 새로 만들어 저장합니다.
 

print (" *************************** ")
print (" python list using extend() ")
print (" *************************** ")
key1 = ['a', 'a2', 'a3', 'a4', 'a5','a6']
key2 = ['b', 'b2', 'b3', 'b4', 'b5','b6']
key3 = ['c', 'c1', 'c2', 'c3', 'c4','c5', 'c6']
key4 = ['a1','b1','c1', 'c6' ]

# extend를 이용하여 리스트 값을 merge 합니다.
key_words = []
key_words.extend(key1)
key_words.extend(key2)
key_words.extend(key3)
key_words.extend(key4)

# extend()는 값의 중복 상관 없이 리스트를 만듭니다.
print('extend :', key_words, len(key_words))

# set()을 이용하여 변수를 새로 만들어 저장합니다ㅏ
key_setted = set(key_words)
print('set :', key_setted, len(key_setted))

print ("------------------------------------------")

# 출력: extend : ['a', 'a2', 'a3', 'a4', 'a5', 'a6', 'b', 'b2', 'b3', 'b4', 'b5', 'b6', 'c', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a1', 'b1', 'c1', 'c6'] 23
# 출력: set : {'a1', 'a6', 'c5', 'a4', 'b3', 'a5', 'a3', 'c6', 'b5', 'c3', 'b1', 'b2', 'c4', 'a', 'b4', 'c1', 'c2', 'b6', 'b', 'c', 'a2'} 21extend : ['a', 'a2', 'a3', 'a4', 'a5', 'a6', 'b', 'b2', 'b3', 'b4', 'b5', 'b6', 'c', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'a1', 'b1', 'c1', 'c6'] 23

 
 
복잡한 로직을 만들수도 있지만 간단히 사용할수 있는 방법이 제일 좋은듯 합니다.

728x90
반응형