파이썬 자료구조

Theo Kim·2022년 8월 21일
0

벌써 세번째 게시물을 작성중이라는 게 참 신기하다.

제로베이스 데이터 스쿨 6기에 참여한 뒤로 할게 많아서 그런지 시간도 엄청 빠르게 가는 느낌?

노트

4_001

# 자료구조란? 여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고,
# 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.

# 자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인 컨테이너 자료형으로는
# 리스트, 튜퓰, 딕셔너리, 셋트가 있다.

list = ['홍길동', '손흥민', '김연아'] # 언제든지 수정 가능
tuple = ('의사', '변호사', '교수')   # 한번 데이터가 정해지면 수정 불가
dictionary = {'kor':88, 'eng':91, 'mat':90, 'his':77} # 키 값이 있음
set = {100, 150, 90, 110}  # 리스트, 튜플과 비슷하나, 중복된 데이터가 허용되지 않는다!

for i in list:
    print(i)

4_002

# 리스트는 '[]'를 이용해서 선언하고, 데이터 구분은 ','를 이용한다.
# 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
strs = [3.14, '십', 20, 'one', '3.141592']
# 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.
datas = [10, 20, 30, [40, 50, 60]]

4_003

# 인덱스란, 아이템에 자동으로 부여되는 번호표
# ['손흥민', '김민재', '박지성', '안정환', '기성용']
#    0         1        2        3        4   <-- 인덱스
print('students[0]: {}'.format(students[0]))
print('students[1]: {}'.format(students[1]))
print('students[2]: {}'.format(students[2]))
print('students[3]: {}'.format(students[3]))
print('students[4]: {}'.format(students[4]))

4_004

# 리스트 길이란, 리스트에 저장된 아이템 개수를 뜻한다.
students = ['손흥민', '김민재', '박지성', '안정환', '기성용']
sLength = len(students)
print('length of student: {}'.format(sLength))

# len()과 반복문을 이용하면 리스트의 아이템 조회가 가능하다.
for i in range(len(students)):
    print('i: {}'.format(i))
    print('students[i]: {}'.format(students[i]))


# len() 함수는 리스트의 개수뿐만 아니라 문자열의 길이도 알 수 있다.
str = 'Hello python!!'
print('\'Hello python\'의 길이: {}'.format(len(str)))

4_005

cars = ['그랜저', '소나타', '말리부', '카니발', '쏘렌토']

for i in range(len(cars)):
   print(cars[i])

# for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있다.
for car in cars:
    print(car)


# for문을 이용한 내부 리스트 조회
studentCnts = [[1, 19], [2, 20], [3, 22], [4, 18], [5, 21]]
for classNo, cnt in studentCnts:
    print('{}학급 학생수: {}'.format(classNo, cnt))

4_006

# for문과 if문을 이용해서 과락 과목 출력하기
minScore = 60
scores = [['국어', 58],
          ['영어', 77],
          ['수학', 89],
          ['과학', 99],
          ['국사', 50]]

for item in scores:
    if item[1] < minScore:
        print('과락 과목: {}, 점수: {}'.format(item[0], item[1]))


for subject, score in scores:
    if score < minScore:
        print('과락 과목: {}, 점수: {}'.format(subject, score))


for subject, score in scores:
    if score >= minScore:
        continue
    print('과락 과목: {}, 점수: {}'.format(subject, score))

4_007

# while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.
cars = ['그랜저', '소나타', '말리부', '카니발', '쏘렌토']

n = 0
while n < len(cars):
    print(cars[n])
    n += 1

n = 0
flag = True
while flag:
    print(cars[n])
    n += 1

    if n == len(cars):
        flag = False

n = 0
while True:
    print(cars[n])
    n += 1

    if n == len(cars):
        break

4_008

# while문과 if문을 이용해서 과락 과목 출력하기
minScore = 60
scores = [['국어', 58],
          ['영어', 77],
          ['수학', 89],
          ['과학', 99],
          ['국사', 50]]

n = 0
while n < len(scores):
    if scores[n][1] < minScore:
        print('과락 과목: {}, 점수: {}'.format(scores[n][0], scores[n][1]))
    n += 1

4_009

# enumerate()함수를 활용하면 아이템을 열거할 수 있다.
sports = ['농구', '수구', '축구', '마라톤', '테니스']

for i in range(len(sports)):
    print('{}: {}'.format(i, sports[i]))

for idx, value in enumerate(sports):
    print('{}: {}'.format(idx, value))


# enumerate()는 문자열에도 적용할 수 있다.
str = 'Hello python.'
for idx, value in enumerate(str):
    print('{}: {}'.format(idx, value))

4_010

students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('students: {}'.format(students))
print('students의 길이: {}'.format(len(students)))
print('students의 마지막 인덱스: {}'.format(len(students) - 1))

# append() 함수를 이용하면 마지막 인덱스에 아이템을 추가할 수 있다.
students.append('강호동')
print('students: {}'.format(students))
print('students의 길이: {}'.format(len(students)))
print('students의 마지막 인덱스: {}'.format(len(students) - 1))



scores = [['국어', 88], ['영어', 91]]
scores.append(['수학', 96])

print('scores: {}'.format(scores))
for subject, score in scores:
    print('과목: {}\t 점수: {}'.format(subject, score))

4_011

students = ['홍길동', '박찬호', '이용규', '박승철', '김지은']
print('students: {}'.format(students))
print('students의 길이: {}'.format(len(students)))
print('students의 마지막 인덱스: {}'.format(len(students) - 1))

# 특정 인덱스 위치에 아이템 추가하기
# insert() 함수를 이용하면 특정 위치(인덱스)에 아이템을 추가할 수 있다.
students.insert(3, '강호동')
print('students: {}'.format(students))
print('students의 길이: {}'.format(len(students)))
print('students의 마지막 인덱스: {}'.format(len(students) - 1))


words = ['I', 'a', 'boy.']
words.insert(1, 'am')

for word in words:
    print(word, end=' ')

4_012

# pop() 함수를 이용하면 마지막 인덱스에 해당하는 아이템을 삭제할 수 있다.

# pop(n) 함수를 n인덱스에 해당하는 아이템을 삭제할 수 있다.

# insert()의 반대개념이라고 생각하면 된다!

students = ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
print('students: {}'.format(students))
print('students length: {}'.format(len(students)))

students.pop()
print('students: {}'.format(students))
print('students length: {}'.format(len(students)))

rValue = students.pop(0)
print('rValue: {}'.format(rValue))
print('students: {}'.format(students))
print('students length: {}'.format(len(students)))

4_013

# remove() 함수를 이용하면 특정 아이템을 삭제할 수 있다.
students = ['홍길동', '박찬호', '이용규', '박승철', '김지은', '강호동']
print(students)

students.remove('박찬호')
print(students)


# remove()는 하나의 데이터만 삭제할 수 있다.
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']
students.remove('강호동')
print(students)

# 모든 '강호동'을 지우기 위해서는 while문을 이용
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은', '강호동']
while '강호동' in students:
    students.remove('강호동')
print(students)

4_014

# 리스트 연결(확장)
# extend()함수를 이용하면 리스트에 또 다른 리스트를 연결(확장)할 수 있다.
group1 = ['홍길동', '박찬호', '이용규']
group2 = ['강호동', '박승철', '김지은']
print('group1: {}'.format(group1))
print('group2: {}'.format(group2))

# group1.extend(group2)
# print('group1: {}'.format(group1))
# print('group2: {}'.format(group2))


# 덧셈 연산을 이용해서 연결하기!
result = group1 + group2
print('result: {}'.format(result))
print('group1: {}'.format(group1))
print('group2: {}'.format(group2))

4_015

# sort() 함수를 이용하면 아이템을 정렬할 수 있다. 오름차순 정렬
names = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print(names)

names.sort()
print(names)

names.sort(reverse=True)    # reverse=True 옵션으로 내림차순으로 정렬 가능!!
print(names)


# 문자열뿐 아니라 숫자들도 정렬 가능!!
numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print(numbers)

numbers.sort()
print(numbers)

numbers.sort(reverse=True)
print(numbers)

4_016

# reverse() 함수를 이용하면 아이템 순서를 뒤집을 수 있다.
names = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print(names)

names.reverse()
print(names)


# 역시 문자열뿐 아니라 숫자에 적용 가능!!
numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print(numbers)

numbers.reverse()
print(numbers)

4_017

# 리스트 슬라이싱: 원하는 아이템만 뽑아내자
# [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.
# 홍길동, 박찬호, 이용규, 강호동, 박승철, 김지은
# [2:4] --> 2 <= n < 4 --> 이용규, 강호동

names = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']

print('names: {}'.format(names))
print('names[2:4]: {}'.format(names[2:4]))
print('names[:4]: {}'.format(names[:4]))
print('names[2:]: {}'.format(names[2:]))
print('names[2:-2]: {}'.format(names[2:-2]))  # 음수를 사용하면 뒤쪽에서부터 계산한다!
print('names[-5:-2]: {}'.format(names[-5:-2])) # 음수를 사용하면 뒤쪽에서부터 계산한다!



numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print('numbers: {}'.format(numbers))
print('numbers[2:4]: {}'.format(numbers[2:4]))
print('numbers[:4]: {}'.format(numbers[:4]))
print('numbers[2:]: {}'.format(numbers[2:]))
print('numbers[2:-2]: {}'.format(numbers[2:-2]))
print('numbers[-5:-2]: {}'.format(numbers[-5:-2]))


# 슬라이싱을 이용한 아이템 변경
names[1:4] = ['park', 'lee', 'kang']
print(names)

# slice()함수를 이용해서 아이템을 슬라이싱할 수 있다.
print(names[slice(2, 4)])

4_018

# 리스트를 곱셈 연산하면 아이템이 반복된다.
students = ['홍길동', '박찬호', '이용규']
print(students)

studentsMul = students * 2
print(studentsMul)


numbers = [2, 50, 0.12, 1, 9]
print(numbers)

numbersMul = numbers * 3
print(numbersMul)


# index(item)함수로 item의 인덱스를 알아낼 수 있다.
print(students.index('홍길동'))
print(students.index('박찬호'))
print(students.index('이용규'))

# index(item, n, m)으로 범위 설정 가능
print(studentsMul.index('홍길동'))
print(studentsMul.index('홍길동', 3, 6))

4_019

# count() 함수를 이용하면 특정 아이템의 개수를 알아낼 수 있다.
students = ['홍길동', '강호동', '박찬호', '이용규', '박승철', '강호동', '김지은']
print('students: {}'.format(students))

searchCnt = students.count('강호동')
print('searchCnt: {}'.format(searchCnt))

# del 키워드를 이용하면 특정 index의 아이템을 삭제할 수 있다.
del students[0]
print('students: {}'.format(students))

del students[2:]
print('students: {}'.format(students))

4_020

# 튜플: 리스트와 비슷하지만 아이템 변경 불가!!!
# '()'를 이용해서 선언하고, 데이터 구분은 ','를 이용한다.
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
print('students: {}'.format(students))
print('students type: {}'.format(type(students)))

numbers = (10, 20, 30, 40, 50, 60, 70)
print('numbers: {}'.format(numbers))
print('students type: {}'.format(type(numbers)))

strs = (3.14, '십', 20, 'one', '3.141592')
datas = (10, 20, 30, (40, 50, 60))

4_021

# 튜플의 아이템을 조회하자
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
print('students[0]: {}'.format(students[0]))
print('students[1]: {}'.format(students[1]))
print('students[2]: {}'.format(students[2]))
print('students[3]: {}'.format(students[3]))
print('students[4]: {}'.format(students[4]))

numbers = (10, 20, 30, 40, 50)
print('numbers[0]: {}'.format(numbers[0]))
print('numbers[1]: {}'.format(numbers[1]))
print('numbers[2]: {}'.format(numbers[2]))
print('numbers[3]: {}'.format(numbers[3]))
print('numbers[4]: {}'.format(numbers[4]))

4_022

# 아이템 존재 유/무 판단하기!
# in, not in 키워드를 이용하면 아이템의 존재 유/무를 알 수 있다.
studentsTuple = ('홍길동', '박찬호', '이용규', '박승철', '김지은')

searchName = input('학생 이름 입력: ')

if searchName in studentsTuple:
    print('{} 학생은 우리반 학생입니다.'.format(searchName))
else:
    print('{} 학생은 우리반 학생이 아닙니다.'.format(searchName))

# in, not in 키워드는 문자열에서도 사용 가능하다.

4_023

# 리스트와 마찬가지로, 튜플에 저장된 아이템 개수를 튜플 길이라고 한다.
students = ('홍길동', '박찬호', '이용규', '박승철', '김지은')
sLength = len(students)
print(sLength)

# len()과 반복문을 이용하면 튜플의 아이템 조회가 가능하다.
for i in range(sLength):
    print('i: {}'.format(i))
    print('students[{}]: {}'.format(i, students[i]))

n = 0
while n < sLength:
    print('n: {}'.format(n))
    print('students[{}]: {}'.format(n, students[n]))
    n += 1

for student in students:
    print('students: {}'.format(student))

4_024

# 두 개의 튜플을 합쳐서 새로운 튜플을 만들자!
studentTuple1 = ('홍길동', '박찬호', '이용규')
print('studentTuple1: {}'.format(studentTuple1))
studentTuple2 = ('박승철', '김지은', '강호동')
print('studentTuple2: {}'.format(studentTuple2))

studentTuple3 = studentTuple1 + studentTuple2
print('studentTuple3: {}'.format(studentTuple3))

# 리스트에서 사용할 수 있는 extend()함수를 튜플에서는 사용할 수 없다.
studentTuple1.extend(studentTuple2) # 튜플에서 사용 불가라서 에러가 나온다.

4_025

# 튜플 슬라이싱: 원하는 아이템만 뽑아내자
# 리스트와 마찬가지로 [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print('students: {}'.format(students))
print('students[2:5]: {}'.format(students[2:5]))
print('students[:4]: {}'.format(students[:4]))
print('students[3:]: {}'.format(students[3:]))
print('students[2:-2]: {}'.format(students[2:-2]))
print('students[-5:-2]: {}'.format(students[-5:-2]))

numbers = [2, 50, 0.12, 1, 9, 7, 17]
print('numbers: {}'.format(numbers))
print('numbers[2:5]: {}'.format(numbers[2:5]))
print('numbers[-4:-2]: {}'.format(numbers[-4:-2]))
print('numbers[0:len(numbers):2]: {}'.format(numbers[0:len(numbers):2]))

# 튜플은 슬라이싱을 이용해서 아이템을 변경할 수 없다.

# 리스트에 튜플 아이템으로 변경 가능
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students[1:4] = ('park', 'lee', 'gang')
print('students: {}'.format(students))
print('type of students: {}'.format(type(students)))

4_026

# 튜플은 리스트와 달리 아이템 추가, 변경, 삭제가 불가하다.
# students.append()     students[3] = '유재석'     students.pop() 등 사용 불가!!!

# 튜플은 선언 시 괄호 생략이 가능하다.
students = ('홍길동', '박찬호', '이용규', '강호동')
print(students)
students2 = '홍길동', '박찬호', '이용규', '강호동'
print(students2)

# 리스트와 튜플은 자료형 변환이 가능하다.
studentList = list(students)
print(studentList)
print(type(studentList))

4_027

# 튜플은 수정이 불가하기 때문에 리스트로 변환 후 정렬하자.
# list() --> sort() --> tuple()

# sorted() 함수를 이용하면 튜플도 정렬할 수 있다.
# sorted()는 리스트 자료형을 반환한다.
students = ('홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은')
print(students)
print(type(students))
students = sorted(students)
print(students)
print(type(students))

numbers = (2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14)
print(numbers)
numbers = sorted(numbers)
print(numbers)

4_028

# for문을 이용하면 튜플의 아이템을 자동으로 참조할 수 있다.
cars = '그랜저', '소나타', '말리부', '카니발', '쏘렌토'

for i in range(len(cars)):
    print(cars[i])

for car in cars:
    print(car)

# for문을 이용하면 튜플의 아이템을 자동으로 참조할 수 있다.
studentCnts = ((1, 19), (2, 20), (3, 22), (4, 18), (5, 21))

for i in range(len(studentCnts)):
    print('{}학급 학생수: {}'.format(studentCnts[i][0], studentCnts[i][1]))

# 똑같지만 더 간단한 방법!!
for classNo, cnt in studentCnts:
    print('{}학급 학생수: {}'.format(classNo, cnt))

4_029

# for문과 if문을 이용해서 과락 과목 출력하기
minScore = 60
scores = (('국어', 58), ('영어', 77), ('수학', 89), ('과학', 99), ('국사', 50))

for item in scores:
    if item[1] < minScore:
        print('과락 과목: {}, 점수: {}'.format(item[0], item[1]))

for subject, score in scores:
    if score < minScore:
        print('과락 과목: {}, 점수: {}'.format(subject, score))

for subject, score in scores:
    if score >= minScore:
        continue
    print('과락 과목: {}, 점수: {}'.format(subject, score))

4_030

# while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.
cars = ('그랜저', '소나타', '말리부', '카니발', '쏘렌토')

n = 0
while n < len(cars):
    print(cars[n])
    n += 1

n = 0
flag = True
while flag:
    print(cars[n])
    n += 1

    if n == len(cars):
        flag = False

n = 0
while True:
    print(cars[n])
    n += 1

    if n == len(cars):
        break


studentCnts = (1, 19), (2, 20), (3, 22), (4, 18), (5, 21)

n = 0
while n <= len(studentCnts):
    print('{}학급 학생수: {}'.format(studentCnts[n][0], studentCnts[n][1]))
    n += 1

4_031

# while문과 if문을 이용해서 과락 과목 출력하기
minScore = 60
scores = ('국어', 58), ('영어', 77), ('수학', 89), ('과학', 99), ('국사', 50)

n = 0
while n < len(scores):
    if scores[n][1] < minScore:
        print('과락 과목: {}, 점수: {}'.format(scores[n][0], scores[n][1]))
    n += 1

4_032

# 딕셔너리: 키(key)와 값(value)를 이용해서 자룔르 관리한다.
# 인덱스가 존재하지 않고 key가 index대신 존재한다.

# 딕셔너리 선언
students = {'s1': '홍길동', 's2': '박찬호', 's3': '이용규', 's4': '박승철', 's5': '김지은'}
print(students)

# key와 value에는 숫자, 문자(열), 논리형 뿐만 아니라 컨테이너 자료형도 올 수  있다.
# 단, key에 immutable 값은 올 수 있지만 mutable값은 올 수 없다.

4_033

# 딕셔너리는 key를 이용해서 value를 조회한다.
students = {'s1': '홍길동', 's2': '박찬호', 's3': '이용규', 's4': '박승철', 's5': '김지은'}
print('students[\'s1\']: {}'.format(students['s1']))
print('students[\'s2\']: {}'.format(students['s2']))
print('students[\'s3\']: {}'.format(students['s3']))
print('students[\'s4\']: {}'.format(students['s4']))
print('students[\'s5\']: {}'.format(students['s5']))
# print(students['s6']) --> 없는 키값을 조회하여 Error 발생!!!

# get()함수를 이용한 딕셔너리 조회
print(students.get('s1'))
print(students.get('s2'))
print(students.get('s3'))
print(students.get('s4'))
print(students.get('s5'))
print(students.get('s6')) # --> get()함수는 없는 키값 조회하여도 None이 조회된다!!

4_034

# key를 이용해서 아이템을 추가하자
# 딕셔너리이름[키(key)] = 값(value) 형태로 아이템을 추가한다.

myInfo = {}
myInfo['이름'] = '김태호'
myInfo['전공'] = 'statistics'
myInfo['메일'] = 'abc@gmail.com'
myInfo['학년'] = 4
myInfo['주소'] = '성남시 분당구'
myInfo['취미'] = ['테니스', '축구', '리그오브레전드']
print('myInfo: {}'.format(myInfo))

# 추가 하려는 키가 이미 있다면 기존 값이 변경된다!!
myInfo['메일'] = 'abcdefg@gmail.com'
print('myInfo: {}'.format(myInfo))

4_035

# 딕셔너리이름[키(key)] = 값(value) 형태로 아이템을 수정한다.
# 학생의 시험 점수가 60점 미만이면 'F(재시험)'으로 값을 변경해보자.

scores = {'kor': 88, 'eng': 55, 'mat': 85, 'sci': 57, 'his': 82}
print('scores: {}'.format(scores))

minScore = 60
fStr = 'F(재시험)'

if scores['kor'] < minScore: scores['kor'] = fStr
if scores['eng'] < minScore: scores['eng'] = fStr
if scores['mat'] < minScore: scores['mat'] = fStr
if scores['sci'] < minScore: scores['sci'] = fStr
if scores['his'] < minScore: scores['his'] = fStr

print('scores: {}'.format(scores))

4_036

# keys()와 values() 와 items()
memInfo = {'이름': '김태호', '메일': 'abc@gmail.com', '학년': 3, '취미': ['테니스', '게임']}

ks = memInfo.keys()
print(ks)

vs = memInfo.values()
print(vs)

items = memInfo.items()
print(items)

# 리스트로 변환
ks = list(ks)
vs = list(vs)
items = list(items)
print(ks)
print(vs)
print(items)

# for문을 이용한 조회
for key in ks:
    print('key: {}'.format(key))

for idx, key in enumerate(ks):
    print('idx, key: {}, {}'.format(idx, key))


# 딕셔너리에서 가장 많이 쓰이는 조회 방법!!!
for key in memInfo.keys():
    print('{}: {}'.format(key, memInfo[key]))

4_037

# # del과 key를 이용한 item 삭제
# memInfo = {'이름': '김태호', '메일': 'abc@gmail.com', '학년': 3, '취미': ['테니스', '게임']}
# print(f'memInfo: {memInfo}')
#
# # '메일' 삭제!
# del memInfo['메일']
# print(f'memInfo: {memInfo}')
#
# # '취미' 삭제!
# del memInfo['취미']
# print(f'memInfo: {memInfo}')


# pop()과 key를 이용한 item 삭제
memInfo = {'이름': '김태호', '메일': 'abc@gmail.com', '학년': 3, '취미': ['테니스', '게임']}
print(f'memInfo: {memInfo}')

returnValue = memInfo.pop('이름')
print(f'memInfo: {memInfo}')
print(f'returnValue: {returnValue}')

4_038

# 키(key) 존재 유/무 판단: in, not in
memInfo = {'이름': '김태호', '메일': 'abc@gmail.com', '학년': 3, '취미': ['테니스', '게임']}

print('이름' in memInfo)
print('메일' in memInfo)
print('학년' in memInfo)
print('취미' in memInfo)

print('name' not in memInfo)
print('mail' not in memInfo)
print('grade' not in memInfo)
print('hobby' not in memInfo)


# len(): 딕셔너리 길이(아이템 개수)를 알 수 있다.
print('len(memInfo): {}'.format(len(memInfo)))

# clear(): 모든 아이템을 삭제한다.
print(memInfo)
memInfo.clear()
print(memInfo)
profile
THEO's velog

0개의 댓글