728x90
본 포스트는 파이썬3.7에서 작성되었습니다.
파이썬 리스트 중복제거!
공부하다가, 리스트에서 중복제거를 어떻게 해줄까? 고민하다가 그나마 제일 일반적인 방법을 찾아서 알려드리려 합니다.ㅎㅎ
의미있게 로또번호를 추출하는 프로그램으로 작성해서 올리겠습니다.
파이썬에서 리스트 연산은 대부분 atomic연산을 지원합니다. 그래서 난수 값을 append할때에 중복이 생길 수 밖에 없습니다. 하지만 파이썬 자료구조 중에는 중복을 지원하지 않는 집합자료구조가 있습니다. 이를 이용해서 보여드리겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import random
def lotto():
a = []
for i in range(6):
a.append(random.randint(1, 45))
b = list(set(a))
while len(b) != len(a):
b.append(random.randint(1,45))
return b
print("몇개의 숫자를 받으시겠습니까? : ")
b = int(input())
if b<=0:
print("종료합니다.")
while b != 0:
print("Lotto : \t{0}".format(sorted(lotto())))
b -=1
|
cs |
코드는 로또 뽑으실 때 사용하시면 됩니다!! ㅎㅎㅎㅎㅎ
집합으로 먼저 캐스팅 후 다시 리스트로 변환합니다. 그렇게되면 중복이 제거되면서 리스트 b와 리스트 a의 원소 개수가 다를 수 있습니다(a가 b보다 많겠죠?) 그래서 중복제거된 만큼 while 문을 통해 길이를 맞춰주면됩니다. 여기서 또 중복이 발생하면 위의 루틴을 한번 더 하면 되지만, 그냥 저대로만 받아도 거의 중복은 없습니다!
감사합니다~~
728x90
'Python' 카테고리의 다른 글
자료구조[2] - Queue(python) (0) | 2020.06.02 |
---|---|
자료구조[1]-STACK(python) (0) | 2020.06.01 |
파이썬에서의 추상데이터타입![2] (0) | 2020.03.02 |
파이썬에서의 추상데이터타입![1] (0) | 2020.03.02 |
파이썬_객체지향(class,module)[3] (0) | 2020.02.20 |
댓글