728x90
01. 리스트
- 여러 가지 자료를 저장할 수 있는 자료
- 지금까지 활용한 숫자나 문자, 수식 등이 개별적인 자료라면, 리스트는 어떤 자료들을 모아서 사용할 수 있게 해주는 특별한 형태의 자료
- 리스트 생성하는 법: 대괄호에 자료를 쉼표로 구분해서 입력
- [요소, 요소, 요소...]
- 대괄호 내부에 넣는 자료를 요소(element)라고 함
# 숫자만으로 구성된 리스트
list_num = [1, 2, 3, 4]
# 문자열만으로 구성된 리스트
list_str = ["a", "b", "c"]
# 여러 자료형으로 구성된 리스트
list_mix = [273, 32, 103, "문자열", True, False]
# 인덱싱, 슬라이싱
print(li)
<실행 결과>
[1, 2, 3, 4, 5]
print(li[0])
<실행 결과>
1
print(li[:-1])
<실행 결과>
[1, 2, 3, 4]
# 이중리스트
li = [1, 2, 3, ["a", "b", "c"]]
li[-1]
<실행 결과>
['a', 'b', 'c']
["a", "b", "c"][0]
<실행 결과>
'a'
li[-1][0]
<실행 결과>
'a'
02. 리스트 연산
- 문자열에 적용할 수 있는 연산자는 리스트에도 활용할 수 있음
# 리스트 병합
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
<실행 결과>
[1, 2, 3, 4, 5, 6]
# 리스트 반복
print(a * 2)
<실행 결과>
[1, 2, 3, 1, 2, 3]
03. 리스트 수정, 삭제
li
<실행 결과>
[1, 2, 3]
# 수정
li[2] = 4
li
<실행 결과>
[1, 2, 4]
# remove 함수를 이용한 삭제
li.remove(4)
li
<실행 결과>
[1, 2]
# remove 함수는 리스트에서 첫 번째로 나오는 특정 요소를 삭제하는 함수
li = [1, 2, 3, 1, 2, 3]
li.remove(3)
li
<실행 결과>
[1, 2, 1, 2, 3]
# pop 함수를 이용한 삭제
# 제거할 위치를 입력하지 않으면 기본값(-1)을 적용해서 리스트의 맨 마지막 요소를 반환하고 해당 요소를 삭제
li = [1, 2, 3]
print(li.pop()) #pop은 무엇을 지우는지 알려줌
print(li)
<실행 결과>
3
[1, 2]
# 특정 인덱스의 요소를 반환하는 것도 가능
li = [1, 2, 3]
print(li.pop(1))
print(li)
<실행 결과>
2
[1, 3]
04. 요소 추가
# 리스트 뒤에 요소를 추가
li.append(5)
li
<실행 결과>
[1, 3, 5]
li.append([1, 2, 3])
li
<실행 결과>
[1, 3, 5, [1, 2, 3]]
# 요소 삽입
# 괄호 안에서 정한 위치에 요소를 삽입
# 해당 위치의 요소는 뒤로 하나씩 밀림
li = [1, 2, 3]
li.insert(0, 4) #insert(위치, 요소)
print(li)
<실행 결과>
[4, 1, 2, 3]
# 리스트 확장
# 리스트 뒤에 새로운 리스트의 요소를 모두 추가
# 한 번에 여러 요소를 추가하고 싶을 때 사용
li.extend([4, 5])
print(li + [1, 2, 3]) ## +는 원본을 파괴하지 않음
<실행 결과>
[4, 1, 2, 3, 4, 5, 1, 2, 3]
print(li)
<실행 결과>
[4, 1, 2, 3, 4, 5]
※리스트 연결 연산자와 리스트 확장의 차이
- 공통점
- 리스트 연결 연산자와 extend() 함수는 비슷한 형태로 동작
- 리스트와 리스트를 연결 -비파괴적
- 리스트 연결 연산자와 extend() 함수는 비슷한 형태로 동작
- 차이점
- 리스트 연결 연산자(+)는 원본 리스트에 아무런 영향을 주지 않음
- extend() 함수는 원본 리스트에 직접적인 영향을 줌 -파괴적
- 기본적으로 자료는 비파괴적으로 사용하는 것이 편리
- 원본으로도 활용할 수 있고 새로운 결과도 활용할 수 있으므로 선택지가 더 넓기 때문
- 따라서 기본 자료형(숫자, 문자열, 불)과 관련된 것들은 비파괴적으로 작동
- 하지만 리스트는 용량이 매우 커질 수 있음
- 용량이 얼마나 커질 지 알 수 없기 때문에 원본과 결과 두 가지 상태를 다 생성하는 것은 위험할 수 있음
- 이런 경우 원본 데이터를 직접 조작하는 기능을 통해 위험을 회피
05. 리스트 관련 함수
# 리스트 오름차순 정렬
li = [1, 4, 3, 2]
li.sort()
print(li)
[1, 2, 3, 4]
# 내림차순 정렬
li.sort(reverse = True)
print(li)
[4, 3, 2, 1]
# 리스트 뒤집기
li = ["a", "c", "b", "d"]
li.reverse() ### reverse는 파괴적
print(li)
['d', 'b', 'c', 'a']
[시작인덱스 : 종료인덱스 : 증감값] default 1
print(li[::-1]) ###print(li[시작index : 종료index : -1]) ###slicing은 비파괴적
['a', 'c', 'b', 'd']
print(li)
['d', 'b', 'c', 'a']
# 위치 반환
li = [1, 2, 3]
li.index(3)
2
# 리스트에 포함된 요소의 개수 세기
li = [1, 2, 3, 1]
li.count(1)
2
# 리스트의 길이 구하기
len(li)
4
# 리스트 내부 요소를 모두 제거
li.clear()
print(li)
[]
06. 확인문제
- list_a 를 적절하게 가공하여 문제에서 제시하는 데이터 만들기
# 1. [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
list_a = [0, 1, 2, 3, 4, 5]
print(list_a*2)
[0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
# 2. [0, 1, 2, 3, 4, 5, 10]
list_a = [0, 1, 2, 3, 4, 5]
list_a.append(10)
print(list_a)
[0, 1, 2, 3, 4, 5, 10]
# 3. [0, 1, 2, 0, 3, 4, 5]
list_a = [0, 1, 2, 3, 4, 5]
list_a.insert(3, 0)
print(list_a)
[0, 1, 2, 0, 3, 4, 5]
# 4. [0, 1, 2, 4, 5]
list_a = [0, 1, 2, 3, 4, 5]
list_a.remove(3)
print(list_a)
[0, 1, 2, 4, 5]
# 5. [0, 1, 2, 3, 4]
list_a = [0, 1, 2, 3, 4, 5]
list_a.pop()
print(list_a)
[0, 1, 2, 3, 4]
728x90
'01_Python' 카테고리의 다른 글
| 25_컬렉션>딕셔너리 (0) | 2025.01.07 |
|---|---|
| 24_컬렉션>튜플 (0) | 2025.01.07 |
| 22_컬렉션>컬렉션 종류 및 개요 (0) | 2025.01.03 |
| 21_Jupyter Notebook에서 표 작성방법 (0) | 2025.01.03 |
| 20_변수>자료형 변환 (0) | 2025.01.03 |