Python 공부 | 리스트

2024. 12. 10. 15:05·Python
목차
1 리스트  ✔
2 튜플
3 딕셔너리

 

* 데이터를 구조화하고 조작하기 위해 필요한 Python 문법

: 리스트, 튜플, 딕셔너리

더보기

실무에서의 활용

  • 딥러닝 모델을 반복 학습하며 결과를 리스트에 추가
  • 데이터 불러올때, 경로 처리할때 split 사용
  • 데이터를 임의의 범위만큼 선택할때 슬라이싱, 인덱싱 사용
  • 데이터를 변경 불가능하게 사용하고 싶을 때
  • 데이터를 담는 하나의 방법

목적

  • 주로 맨 처음 데이터를 불러오고 가공할 때 사용
  • 결과를 저장할 때 많이 사용

기대효과

  • 데이터를 자유자재로 다룰 수 있고 정리할 수 있다

 

📖 리스트 (list)  

  • 여러 값을 순서대로 담을 수 있는 가변(mutable)한 시퀀스
  • 대괄호[ ]로 만들며 쉼표,로 구분함 
# 1. 리스트 생성
my_list = [1, 2, 3, 4, 5]

# 2. 리스트의 기본 구조
print(my_list)  # 출력: [1, 2, 3, 4, 5]

 

리스트의 인덱싱

  • 인덱싱(Indexing) : 리스트에서 특정 위치의 값에 접근하는 방법
  • 파이썬에서는 첫 순서가 0임!! 1 아님!!
# 리스트 생성
numbers = [1, 2, 3, 4, 5]

# 첫 번째 요소에 접근하기
first_number = numbers[0]
print("First number:", first_number) # 출력: First number: 1

# 두 번째 요소에 접근하기
second_number = numbers[1]
print("Second number:", second_number) # 출력: First number: 2

# 음수 사용해서 마지막 요소에 접근하기
last_number = numbers[-1]
print("Last number:", last_number) # 출력: First number: 5

# 음수 인덱스를 사용하여 역순으로 요소에 접근하기
second_last_number = numbers[-2]
print("Second last number:", second_last_number) # 출력: First number: 4

# 범위를 벗어나는 인덱싱을 사용하면 에러남
sixth_number = numbers[5]
print("Sixth number:", sixth_number) # 출력 시 에러 발생

 

 

유용한 리스트 메서드

  • append() : 리스트에 항목을 추가합니다. 자주 씀★ ★ ★
  • extend() : 리스트에 다른 리스트의 모든 항목을 추가합니다. 자주 씀★ ★
  • insert() : 리스트의 특정 위치에 항목을 삽입합니다. 구문: a_list.insert(삽입할 위치, 삽입할 값)
  • remove() : 리스트에서 특정 값을 삭제합니다.
  • pop() : 리스트에서 특정 위치의 값을 제거하고 반환합니다.
  • index() : 리스트에서 특정 값의 인덱스를 찾습니다.
  • count() : 리스트에서 특정 값의 개수를 세어줍니다.
  • sort() : 리스트의 항목들을 정렬합니다.
  • reverse() : 리스트의 항목들을 역순으로 뒤집습니다.
# 리스트 생성
my_list = [1, 2, 3, 4, 5]

#리스트의 다양한 메서드(Methods)
my_list.append(6) # 리스트에 새로운 항목 추가
print(my_list)  # 출력: [1, 2, 3, 4, 5, 6]

my_list.extend([7, 8, 9]) # 다른 리스트의 모든 항목을 추가
print(my_list)  # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]

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

my_list.remove(3) # 값 3 삭제 (순번 아님!)
print(my_list)  # 출력: [1, 2, 10, 4, 5, 6, 7, 8, 9]

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]

my_list.reverse() # 리스트 역순으로 뒤집기 (sort 안 쓴 상태면 그냥 그대로 뒤집음)
print(my_list)  # 출력: [10, 9, 8, 7, 5, 4, 2, 1]

 

리스트 값 삭제

  • del a_list[삭제할 요소 위치]: 특정 항목 삭제
  • clear() : 모든 항목 삭제
# 리스트의 항목 삭제
del my_list[0]
print("첫 번째 항목 삭제 후 리스트:", my_list) 

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

 

리스트 값 변경

  • 인덱싱 활용 ex) a_list[변경할 값 위치] = 새로운 값 
my_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']

# 리스트 값 변경하기
my_list[3] = 'dragonfruit'
print(my_list)  # 출력: ['apple', 'banana', 'cherry', 'dragonfruit', 'elderberry']

 

중첩된 리스트에서 인덱싱

  • 중첩된 리스트명 [몇번째 리스트] [요소 위치]
# 중첩된 리스트에서 인덱싱하기
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(nested_list[1][0])  # 출력: 4 (두 번째 리스트의 첫 번째 항목)

 

리스트 함수 실전 예시 : 간단한 데이터 계산

# 리스트를 사용한 간단한 데이터 계산 예시
grades = [85, 92, 88, 78, 90]
average_grade = sum(grades) / len(grades) # list에서 len함수는 요소의 개수 반환
print("평균 성적:", average_grade)

*참고) len함수는 list에서 요소의 개수 반환, 문자열에서는 길이 반환

 

리스트 슬라이싱 ★ ★ ★

  • 다시 한 번! 파이썬은 맨 처음을 가리키는 인덱스가 0이! (1이 아님 유의)
  • 슬라이싱을 할 때 끝에 입력할 인덱스는 내가 선택할 인덱스보다 +1을 해주어야 함
    ex) 1번째부터 12번째까지의 요소를 가져올 것이면 [0:13] 이렇게 슬라이싱
  • 이게 헷갈리니까 요소의 순번이 아니라 콤마(,) 개수 기준으로 슬라이싱한다고 외우는 방법도 있음
    ex) list = [1,3,5,7]
    list[0,2] = [1,3]  ← 두번째 콤마를 기준으로 슬라이싱해서 [1,3]이 나온다~ 이런 느낌
# 리스트 슬라이싱의 구분
# 아래는 실행하는 코드가 아닙니다
new_list = old_list[start:end:step]
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

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

# 2. 시작 인덱스 생략하기 (처음부터 추출, 0번부터 4번까지)
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] -1번째칸 즉 맨 마지막칸 앞까지 출력

# 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. 리스트를 거꾸로 뒤집기 (step 활용, 근데 헷갈리니까 웬만하면 사용x)
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] 맨뒤에서부터 한칸띄고 두번째칸 반복

reversed_list = my_list[5:2:-1]
print(reversed_list)  # 출력: [6, 5, 4] 시작은 5니까 6번째칸, step 음수라 반대, 2니까 3번째칸 뒤까지

# [8,6,4,2]를 뽑고 싶으면
reversed_list=my_list[-3::-2]
print(reversed_list)

 

# 현업에서는 쓸 일 별로 없지만 코딩테스트에 나올 수 있는거
# 리스트에서 홀수 번째 인덱스의 값들 출력하기
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() : 오름차순 정렬이 기본값
  • sort(reverse=False)가 기본, 내림차순할 때는 True로 변경
my_list.sort(reverse=False) # T/F쓸 때 첫 글자 대문자

 


 

퀴즈 풀이

# 다음 리스트에서 세 번째 요소를 출력하세요.
my_list = [10, 20, 30, 40, 50]
third = my_list[2]
print(third)  # 출력: 30

# 다음 리스트에 60을 추가하세요.
my_list = [10, 20, 30, 40, 50]
my_list.append(60)
print(my_list)  # 출력: [10, 20, 30, 40, 50, 60]

#다음 리스트의 길이를 출력하세요.
my_list = ['apple', 'banana', 'orange', 'grape']
len(my_list)  # 출력: 4

#다음 리스트의 마지막 요소를 제거하세요.
my_list = ['car', 'bus', 'bike', 'train']
my_list.pop(-1)
print(my_list)  # 출력: ['car', 'bus', 'bike']

#다음 리스트를 역순으로 출력하세요.
my_list = ['red', 'green', 'blue', 'yellow']
my_list.reverse()
print(my_list)  # 출력: ['yellow', 'blue', 'green', 'red']

 

'Python' 카테고리의 다른 글
  • Python 실습 | 짝수 판별, 제품 재고 관리
  • Python 공부 | 조건문(if, elif, else) 반복문(for, while)
  • Python 공부 | 튜플, 딕셔너리
  • Python 공부 | 파이썬 기초, 변수와 데이터 타입
초담
초담
4년차 마케터입니다
  • 초담
    그로스마케터의 기록
    초담
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (117)
      • Data Analytics Project (3)
      • SQL (55)
      • Python (43)
      • GA4 (0)
      • Tableau (8)
      • 아티클 스터디 (7)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
초담
Python 공부 | 리스트
상단으로

티스토리툴바