데이터 분석 TIL - 리스트, 튜플, 딕셔너리

테리·2025년 10월 24일

1. 학습 키워드

리스트, 튜플, 딕셔너리

2. 학습 내용

리스트

리스트의 다양한 매서드

  • append(): 리스트에 항목을 추가합니다.
  • extend(): 리스트에 다른 리스트의 모든 항목을 추가합니다.
  • insert(): 리스트의 특정 위치에 항목을 삽입합니다.
  • remove(): 리스트에서 특정 값을 삭제합니다.
  • pop(): 리스트에서 특정 위치의 값을 제거하고 반환합니다.
  • index(): 리스트에서 특정 값의 인덱스를 찾습니다.
  • count(): 리스트에서 특정 값의 개수를 세어줍니다.
  • sort(): 리스트의 항목들을 정렬합니다.
  • reverse(): 리스트의 항목들을 역순으로 뒤집습니다.

ex)

my_list.insert(2, 10) # 두 번째 위치에 값 삽입
print(my_list)  # 출력: [1, 2, 10, 3, 4, 5, 6, 7, 8, 9]

my_list.remove(3) # 값 3 삭제

popped_value = my_list.pop(5) # 다섯 번째 위치의 값 제거하고 반환
print(popped_value)  # 출력: 6
print(my_list)  # 출력: [1, 2, 10, 4, 5, 7, 8, 9]

print(my_list.index(4)) # 출력: 3 (값 4의 인덱스)
print(my_list.count(7)) # 출력: 1 (값 7의 개수)

my_list.sort() # 리스트 정렬
print(my_list)  # 출력: [1, 2, 4, 5, 7, 8, 9, 10]

리스트 값 삭제

# 리스트의 항목 삭제
del my_list[0]
print("첫 번째 항목 삭제 후 리스트:", my_list) 

# 리스트 내 값들의 모든 항목 제거
my_list.clear()
print("모든 항목 제거 후 리스트:", my_list) 

슬라이싱

new_list = old_list[start:end:step]: 일반적으로 step은 잘 사용하지 않지만 필요에 따라 사용함. 끝 인덱스의 한칸 전까지만 가져온다.

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 1. 일부분만 추출하기
print(my_list[2:5])   # 출력: [3, 4, 5]

# 2. 시작 인덱스 생략하기 (처음부터 추출)
print(my_list[:5])    # 출력: [1, 2, 3, 4, 5]

# 3. 끝 인덱스 생략하기 (끝까지 추출)
print(my_list[5:])    # 출력: [6, 7, 8, 9, 10]

# 4. 음수 인덱스 사용하기 (뒤에서부터 추출)
print(my_list[-3:])   # 출력: [8, 9, 10]
print(my_list[-3:-1]) # 출력: [-8, 9]

# 5. 간격 설정하기 (특정 간격으로 추출)
print(my_list[1:9:2]) # 출력: [2, 4, 6, 8]

# 6. 리스트 전체를 복사하기
copy_of_list = my_list[:]
print(copy_of_list)   # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 7. 리스트를 거꾸로 뒤집기
reversed_list = my_list[::-1]
print(reversed_list)  # 출력: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
reversed_list = my_list[::-2]
print(reversed_list)  # 출력: [10, 8, 6, 4, 2]

슬라이싱할 때 홀수 or 짝수 번째 인덱스의 값만 가져올 수 있다.

# 리스트에서 홀수 번째 인덱스의 값들 출력하기
my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90]

odd_index_values = my_list[1::2]
print("홀수 번째 인덱스의 값들:", odd_index_values)  # 출력: [20, 40, 60, 80]

정렬

  • sort() 메서드는 리스트의 항목들을 정렬하는 데 사용
    reverse: 정렬 순서를 지정함. 기본값은 False로 오름차순을 의미하며, True로 설정하면 내림차순으로 정렬됨.
my_list.sort(reverse=False)

문자열 길이로 정렬도 가능함

# 리스트의 문자열 길이로 정렬 예시
words = ['apple', 'banana', 'orange', 'grape', 'cherry']
words.sort(key=len)
print("문자열 길이로 정렬된 리스트:", words)  # 출력: ['apple', 'grape', 'banana', 'cherry', 'orange']

튜플

변경할 수 없는 시퀀스 자료형. 한 번 생성된 이우에는 요소를 추가하거나 삭제할 수 없음. 데이터를 보호하고 싶을때 주로 사용함.

튜플끼리 합치거나 튜플을 반복하는건 가능하다. 값을 바꿀 수 없는 것이다.

  • 튜플을 리스트로 변경
    my_tuple = (1, 2, 3, 4, 5)
    list(my_tuple)

  • 리스트를 튜플로 변경
    my_list = [1, 2, 3, 4, 5]
    tuple(my_list)

딕셔너리

key와 value로 구성됨. 키는 중복이 되면 안된다.

# 학생 성적표
grades = {
    'Alice': 90,
    'Bob': 85,
    'Charlie': 88
}

# 접근하기
print(grades['Alice'])  # 출력: 90

# 값 수정하기
grades['Bob'] = 95

# 요소 추가하기
grades['David'] = 78

# 요소 삭제하기
del grades['Charlie']

자주 사용되는 메서드

  • keys(): 모든 키를 dict_keys 객체로 반환함.
  • values(): 모든 값을 dict_values 객체로 반환함.
  • items(): 모든 키-값 쌍을 (키, 값) 튜플로 구성된 dict_items 객체로 반환함.
  • get(): 지정된 키에 대한 값을 반환함. 없는 키를 입력하면 None(기본값)을 반환함.
  • pop(): 지정된 키와 해당 값을 딕셔너리에서 제거하고 값을 반환함.
  • popitem(): 딕셔너리에서 마지막 키-값 쌍을 제거하고 반환함.
# 딕셔너리 생성
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}

# keys()
my_dict.keys() # 출력: dict_keys(['name', 'age', 'city'])

# values()
my_dict.values() # 출력: dict_values(['John', 30, 'New York'])

# items()
my_dict.items() # 출력: dict_items([('name', 'John'), ('age', 30), ('city', 'New York')])

# get()
my_dict.get('age') # 출력: 30

# pop()
city = my_dict.pop('city')
print("City:", city)  # 출력: New York
print("Dictionary after pop:", my_dict)  # 출력: {'name': 'John', 'age': 30}

# popitem() # 딕셔너리 마지막 key, value 가져옴.
last_item = my_dict.popitem()
print("Last item popped:", last_item)  # 출력: ('age', 30)
print("Dictionary after popitem:", my_dict)  # 출력: {'name': 'John'}

3. 배운점

  1. index(), sort()도 드물지 않게 사용하는 경우도 자주 봤고 pop()을 사용하는 경우도 종종 본적이 있다. 외우지 않아도 된다고하지만 외우고있으면 편리하게 사용할 수 있을 것 같다. 그리고 문자열 길이로도 정렬이 가능하다는 것을 처음 알았다.
  2. 딕셔너리를 사용할 때 마다 기본 기능도 은근 헷갈리는 경우가 있다. 한번 더 확인할 수 있었고 popitem() 이라는 메서드를 처음 알았다.

0개의 댓글