[Python] 6. 리스트

YJ·2024년 10월 19일

Python 공부하기

목록 보기
7/13
post-thumbnail

💡 도움이 되셨다면 ♡와 팔로우 부탁드려요! 미리 감사합니다.

본 블로그 글은 박동민·강영민 저자님의 으뜸파이썬 교재를 참고하여 만들어진 글임을 밝힙니다.

리스트

  • 여러 개의 값이나 변수를 한꺼번에 담을 수 있다.
    • 서로 다른 자료형을 가질 수 있다.
  • 매번 변수의 이름을 작성하고 관리하는 것보다 편리하고 효율적
  • 한꺼번에 복사하고 조작할 수 있다.

항목, 요소

  • 리스트를 이루는 원소로 쉼표로 구분된 값
  • 항목 값을 참조는 인덱스

사용 예시 :

sorce_list = [87, 84, 95, 67, 88, 94, 63]
print(score_list[0]) # 87, 리스트의 첫번째 값 출력
print(score_list[3]) # 67, 리스트의 네번째 값 출력

range()

  • 파이썬에서 연속된 숫자들의 시퀀스를 생성하는 함수이다.

사용 예시 :

range(start, stop, step)
  • start (선택): 시퀀스가 시작될 숫자 (기본값: 0)
  • stop (필수): 시퀀스가 끝나는 숫자 (해당 값은 포함되지 않음)
  • step (선택): 숫자 간의 간격 (기본값: 1)

인덱스

  • 리스트의 항목 값을 가리키는 숫자
  • n개의 항목을 가진 리스트의 인덱스는 0부터 n-1까지
  • 인덱싱 : 항목의 인덱스를 이용하여 자료 값에 접근
    • 인덱스 값에 최대 인덱스 값보다 더 큰 값을 넣으면 에러 발생
    • IndexError: list index out of range
    • 최대 인덱스 : len(list_) - 1

음수 인덱스

  • 파이썬에서 리스트의 가장 큰 특징
  • 제일 마지막 원소로부터 -1, -2, -3으로 -1씩 감소하면서 인덱싱

사용 예시 :

nations = ['Korea', 'China', 'Japan', 'USA']
print(nations[-1]) # 마지막 원소인 USA 출력

리스트 항목의 추가와 삭제

append() 메소드

  • 리스트의 끝에 새로운 항목을 삽입하는 기능

사용 예시 :

n_list = [1, 2, 3, 4, 5]
n_list.append(6)
print(n_list) # [1, 2, 3, 4, 5, 6] 출력

del 키워드

  • 지정된 인덱스에 위치한 항목을 삭제

사용 예시 :

n_list = [11, 22, 33, 44, 55]

del 33 # 33 항목 삭제
print(n_list) 

remove() 메소드

  • 특정한 값을 리스트의 항목에서 삭제

사용 예시 :

n_list = [11, 22, 33, 44, 55]

n_list.remove(33)
print(n_list)

멤버 연산자

in, not in

  • 참(True) 혹은 거짓(False)를 반환하는 연산자
  • 특정 항목 값이 문자열, 리스트, 튜플과 같은 자료구조의 내부에 포함되어 있는가를 검사하는 연산자

사용 예시 :

n_list = [10, 20, 30, 40]

print(10 in n_list) # 요소에 있으므로 True
print(50 in n_list) # 요소에 없으므로 False
print(10 not in n_list) # 요소에 없으므로 False
print(50 not in n_list) # 요소에 있으므로 True

리스트에 적용하는 내장 함수

min()

  • 리스트 내 최솟값 반환
    • 숫자의 경우 가장 작은 값
    • 문자열의 경우 영어 사전 순서로 가장 앞에 있는 단어 반환

max()

  • 리스트 내 최댓값 반환
    • 숫자의 경우 가장 큰 값
    • 문자열의 경우 영어 사전 순서로 가장 뒤에 있는 단어 반환

사용 예시 :

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

print(min(n_list)) # 1 출력
print(max(n_lsit)) # 10 출력

sum()

  • 리스트 원소의 총합을 반환

len()

  • 리스트의 길이를 반환

리스트의 메소드

sort()

  • 리스트 원소를 정렬
  • 디폴트는 오름차순 정렬
    • reverse = True : 내림차순 정렬
n_list = [40, 20, 30, 10, 50]
n_list.sort()
print(n_list) # [10, 20, 30, 40, 50]
n_list.sort(reverse = True)
print(n_list) # [50, 40, 30, 20, 10]

리스트 메소드 정리

메소드설명
index(x)리스트에서 첫 번째로 x가 나타나는 인덱스를 반환. 만약 x가 없으면 오류 발생
append(x)리스트의 끝에 x를 추가. 기존 리스트를 수정하며 새로운 리스트를 반환하지 않음
count(x)리스트에서 x의 등장 횟수를 반환
extend([x1, x2])리스트의 끝에 다른 리스트 [x1, x2]를 확장. 여러 요소를 추가할 때 유용
insert(index, x)주어진 index 위치에 x를 삽입. 리스트의 나머지 요소들이 뒤로 밀림
remove(x)리스트에서 첫 번째로 나타나는 x를 삭제. 만약 x가 없으면 오류 발생
pop(index)주어진 index 위치에 있는 요소를 삭제하고 반환. 인덱스를 지정하지 않으면 마지막 요소를 삭제하고 반환
sort()리스트를 오름차순으로 정렬. 기존 리스트를 변경하며 새로운 리스트를 반환하지 않음
reverse()리스트의 요소들을 순서를 반대로 뒤집음.

사용 예시 :

# 기본 리스트 설정
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# 1. index(x): 리스트에서 값 5가 처음 나오는 인덱스 찾기
index_of_five = my_list.index(5)
print(f"Index of 5: {index_of_five}")  # 출력: 4

# 2. append(x): 리스트 끝에 값 7 추가
my_list.append(7)
print(f"After append(7): {my_list}")  # 출력: [3, 1, 4, 1, 5, 9, 2, 6, 5, 7]

# 3. count(x): 리스트에서 값 1이 몇 번 등장하는지 세기
count_of_ones = my_list.count(1)
print(f"Count of 1: {count_of_ones}")  # 출력: 2

# 4. extend([x1, x2]): 리스트 끝에 [8, 10]을 확장
my_list.extend([8, 10])
print(f"After extend([8, 10]): {my_list}")  # 출력: [3, 1, 4, 1, 5, 9, 2, 6, 5, 7, 8, 10]

# 5. insert(index, x): 인덱스 3에 값 42 삽입
my_list.insert(3, 42)
print(f"After insert(3, 42): {my_list}")  # 출력: [3, 1, 4, 42, 1, 5, 9, 2, 6, 5, 7, 8, 10]

# 6. remove(x): 첫 번째로 등장하는 값 1 제거
my_list.remove(1)
print(f"After remove(1): {my_list}")  # 출력: [3, 4, 42, 1, 5, 9, 2, 6, 5, 7, 8, 10]

# 7. pop(index): 인덱스 4에 있는 요소 제거하고 반환
popped_value = my_list.pop(4)
print(f"Popped value: {popped_value}")  # 출력: 5
print(f"After pop(4): {my_list}")  # 출력: [3, 4, 42, 1, 9, 2, 6, 5, 7, 8, 10]

# 8. sort(): 리스트를 오름차순으로 정렬
my_list.sort()
print(f"After sort(): {my_list}")  # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 42]

# 9. reverse(): 리스트를 역순으로 뒤집기
my_list.reverse()
print(f"After reverse(): {my_list}")  # 출력: [42, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

리스트의 연산

  • 리스트 사이에는 더하기 연산자 사용
    • 빼기, 곱하기, 나누기 연산자 사용불가

사용 예시 :

list1 = [11, 22, 33, 44]
list2 = [55, 66]

list3 = list1 + list2
print(list3) # [11, 22, 33, 44, 55, 66] 출력

곱셈 연산

  • 리스트에는 정수 곱셈 연산 가능

사용 예시 :

n_list = [1, 2, 3, 4, 5]
print(n_list * 2) # [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] 출력
print(n_list * 3) # [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] 출력

비교 연산

== 연산자

  • 두 리스트의 항목 값이 모두 같은지를 검사

사용 예시 :

list1 = [1, 2, 3, 4]
list2 = [1, 2, 3, 4]
print(list1 == list2) # True 반환

list3 = [4, 1, 2, 3]
print(list1 == list3) # False 반환

>, >=, <. <= 연산자

  • 문자열의 경우 사전적 순서 비교
list1 = [1, 2, 3]
list2 = [1, 2, 4]

print(list1 < list2)   # True (세 번째 요소 3이 4보다 작음)
print(list1 > list2)   # False

리스트 내용 수정

for문을 이용해 수정

 n_list = [10, 20, 30, 40, 50]
 
 for i in range(len(n_list)):
	 n_list[i] = n* 10

print(n_list) # [100, 200, 300, 400, 500] 출력

리스트 컴프리헨션

n_list = [10, 20, 30, 40, 50]
n_list = [n * 10 for n in n_list]

print(n_list) # [100, 200, 300, 400, 500] 출력

map과 lambda 사용

n_list = [10, 20, 30, 40, 50]
n_list = list(map(lambda x:x*10, n_list))

print(n_list) # [100, 200, 300, 400, 500] 출력

리스트의 슬라이싱

  • 리스트 내의 항목을 특정한 구간별로 선택하여 잘라내는 기능

사용 예시 :

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

# 1. 기본 슬라이싱: 시작 인덱스부터 끝 인덱스 전까지의 요소 선택
print(my_list[2:5])  # 출력: [2, 3, 4]

# 2. 시작 인덱스 생략: 리스트의 처음부터 끝 인덱스 전까지
print(my_list[:5])  # 출력: [0, 1, 2, 3, 4]

# 3. 끝 인덱스 생략: 시작 인덱스부터 리스트의 끝까지 선택
print(my_list[5:])  # 출력: [5, 6, 7, 8, 9]

# 4. 시작과 끝 모두 생략: 전체 리스트 복사
print(my_list[:])  # 출력: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 5. 음수 인덱스 사용: 끝에서부터 요소 선택
print(my_list[-4:])  # 출력: [6, 7, 8, 9] (끝에서 4번째 요소부터 끝까지)

# 6. 간격 지정: 모든 요소 중 2개씩 건너뛰기
print(my_list[::2])  # 출력: [0, 2, 4, 6, 8]

# 7. 간격을 음수로 지정: 리스트를 거꾸로 슬라이싱
print(my_list[::-1])  # 출력: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

# 8. 부분 리스트를 거꾸로 슬라이싱
print(my_list[7:2:-1])  # 출력: [7, 6, 5, 4, 3]

# 9. 리스트 일부 요소를 변경하기
my_list[2:5] = ['a', 'b', 'c']  # 2번 인덱스부터 5번 인덱스 전까지를 대체
print(my_list)  # 출력: [0, 1, 'a', 'b', 'c', 5, 6, 7, 8, 9]

# 10. 빈 리스트를 슬라이싱 구간에 넣어 해당 구간 삭제
my_list[2:5] = []
print(my_list)  # 출력: [0, 1, 5, 6, 7, 8, 9]
profile
제 글이 유익하셨다면 ♡와 팔로우로 응원 부탁드립니다.

0개의 댓글