리스트
여러 항목을 하나의 변수에 저장할 수 있는 데이터 구조
1. 기본 리스트와 중첩 리스트
① 기본 리스트
# 빈 리스트 선언
empty_list = []
# 숫자로 구성된 리스트 선언
number_list = [1, 2, 3, 4, 5]
# 문자열로 구성된 리스트 선언
string_list = ["python", "is", "good"]
# 여러 데이터 타입으로 구성된 리스트 선언
mixed_list = [1, 2, "python", "is", True]
② 중첩 리스트
리스트 안에 리스트가 포함된 형태
nested_list = [[1, 2, 3], [4, 5, 6], ["python", "is", "good"], [True, False]]
2. 리스트 생성 함수 list( )
# 문자열을 리스트로 변환
str = "Hello"
lst = list(str)
print(lst) # ['H', 'e', 'l', 'l', 'o']
# 튜플을 리스트로 변환
tpl = (10, 20, 30)
lst = list(tpl)
print(lst) # [10, 20, 30]
lst.append(40)
tpl = tuple(lst)
print(tpl) # (10, 20, 30, 40)
# 딕셔너리를 리스트로 변환 -> 키값만 리스트로 반환
d = {'one':1, 'two':2, 'three':3}
lst = list(d)
print(lst) # ['one', 'two', 'three']
# 집합을 리스트로 변환
s = {1, 2, 3}
lst = list(s)
print(lst) # [1, 2, 3]
3. 리스트의 복사
① 얕은 복사
copied를 변경하면 original도 변하게 된다.
original = [1, 2, 3, 4, 5]
copied = original
print(original) # [1, 2, 3, 4, 5]
print(copied) # [1, 2, 3, 4, 5]
copied[0] = 10
print(copied) # [10, 2, 3, 4, 5]
print(original) # [10, 2, 3, 4, 5] <= original도 변함
② 깊은 복사
copied를 변경해도 original은 변하지 않는다.
# 슬라이싱을 이용한 깊은 복사
original = [1, 2, 3, 4, 5]
copied = original[:]
print(original) # [1, 2, 3, 4, 5]
print(copied) # [1, 2, 3, 4, 5]
copied[0] = 10
print(copied) # [10, 2, 3, 4, 5]
print(original) # [1, 2, 3, 4, 5] <= original은 변하지 않음
# copy() 메서드를 이용한 깊은 복사
original = [1, 2, 3, 4, 5]
copied = original.copy()
print(original) # [1, 2, 3, 4, 5]
print(copied) # [1, 2, 3, 4, 5]
copied[0] = 10
print(copied) # [10, 2, 3, 4, 5]
print(original) # [1, 2, 3, 4, 5] <= original은 변하지 않음
# copy 모듈을 이용한 깊은 복사
import copy
original = [1, 2, 3, 4, 5]
copied = copy.deepcopy(original)
print(original) # [1, 2, 3, 4, 5]
print(copied) # [1, 2, 3, 4, 5]
copied[0] = 10
print(copied) # [10, 2, 3, 4, 5]
print(original) # [1, 2, 3, 4, 5] <= original은 변하지 않음
4. 리스트 슬라이싱
리스트의 특정 부분을 추출하는 방법
list[start:end:step]
~~~~~ ~~~ ~~~~
| | |
| | +-- 항목을 선택하는 간격 (생략하면 1)
| +-- 슬라이싱을 끝낼 인덱스로 해당 인덱스는 포함되지 않음
+-- 슬라이싱을 시작할 인덱스 (생략하면 0)
fruits = ['apple', 'banana', 'cherry', 'durian', 'elderberry']
# 첫 두 요소를 가져와서 출력
print(fruits[:2]) # ['apple', 'banana'] <= 인덱스 0, 1
# 세번째 요소부터 마지막 요소까지 가져와서 출력
print(fruits[2:]) # ['cherry', 'durian', 'elderberry'] <= 인덱스 2, 3, 4
# 두번째 요소부터 네번째 요소까지 가져와서 출력
print(fruits[1:4]) # ['banana', 'cherry', 'durian'] <= 인덱스 1, 2, 3
# 모든 요소를 가져와서 출력
print(fruits[:]) # ['apple', 'banana', 'cherry', 'durian', 'elderberry'] <= 인덱스 0, 1, 2, 3, 4
# 간격을 지정해서 슬라이싱
print(fruits[::2]) # ['apple', 'cherry', 'elderberry'] <= 인덱스 0, 2, 4
print(fruits[1::2]) # ['banana', 'durian'] <= 인덱스 1, 3
# 음수 인덱스와 함께 슬라이싱
# 뒤에서부터 세번째 요소부터 마지막 요소까지 가져와서 출력
print(fruits[-3:]) # ['cherry', 'durian', 'elderberry'] <= 인덱스 2, 3, 4
# 리스트의 처음부터 마지막에서 두번째 항목까지 가져와서 출력
print(fruits[:-2]) # ['apple', 'banana', 'cherry', 'durian'] <= 인덱스 0, 1, 2, 3
# 리스트 역순으로 출력
print(fruits[::-1]) # ['elderberry', 'durian', 'cherry', 'banana', 'apple'] <= 인덱스 4, 3, 2, 1, 0
5. 리스트 항목 추가 / 삭제
① 추가
append( ), insert( ) 이용
# append() : 리스트의 끝에 요소를 추가
fruits = [ 'apple', 'banana', 'cherry' ]
fruits.append('orange')
print(fruits) # ['apple', 'banana', 'cherry', 'orange']
# insert(index, value) : 리스트의 index 위치에 value를 삽입
fruits.insert(1, 'grape')
print(fruits) # ['apple', 'grape', 'banana', 'cherry', 'orange']
② 삭제
remove( ), pop( ), 슬라이싱, del 등을 이용
# remove(value) : 리스트에서 첫번째로 일치하는 항목을 제거
fruits = ['apple', 'banana', 'cherry', 'banana', 'banana', 'grape']
fruits.remove('banana')
print(fruits) # ['apple', 'cherry', 'banana', 'banana', 'grape']
# pop() : 리스트에서 마지막 항목을 제거하고 반환
popped_item = fruits.pop()
print(fruits) # ['apple', 'cherry', 'banana', 'banana']
print(popped_item) # grape
# pop(index) : 리스트에서 해당 인덱스의 항목을 제거하고 반환
popped_item = fruits.pop(1)
print(fruits) # ['apple', 'banana', 'banana']
print(popped_item) # cherry
# 슬라이싱을 이용해서 특정 범위의 항목을 제거
fruits = ['apple', 'banana', 'cherry', 'banana', 'banana', 'grape']
fruits[1:3] = [] # 1번 인덱스부터 3번 인덱스 전까지 제거
print(fruits) # ['apple', 'banana', 'banana', 'grape']
# del 키워드를 이용해서 특정 인덱스의 항목을 제거
fruits = ['apple', 'banana', 'cherry', 'banana', 'banana', 'grape']
del fruits[1] # 1번 인덱스 제거
print(fruits) # ['apple', 'cherry', 'banana', 'banana', 'grape']
# del 키워드와 슬라이싱을 이용해서 특정 범위의 항목을 제거
fruits = ['apple', 'banana', 'cherry', 'banana', 'banana', 'grape']
del fruits[1:3] # 1번 인덱스부터 3번 인덱스 전까지 제거
print(fruits) # ['apple', 'banana', 'banana', 'grape']
6. 리스트 항목의 존재 여부 확인
리스트 안에 특정 값이 존재하는지 확인하는 연산자 in을 이용
fruits = ['apple', 'banana', 'cherry']
# banana가 fruits 리스트에 포함되어 있는지 확인
if 'banana' in fruits:
print('바나나가 있습니다.')
else:
print('바나나가 없습니다.')
# not in 연산자
# 리스트 안에 특정 값이 존재하지 않는지 확인하는 연산자
if 'orange' not in fruits:
print('오렌지가 없습니다.')
else:
print('오렌지가 있습니다.')
7. 리스트 메서드
① 요소의 개수
count( ) 함수 이용
# count(value) : 리스트에 포함된 요소(value)의 개수를 반환
fruits = ['apple', 'banana', 'cherry', 'bnana', 'orange', 'banana' ]
banana_count = fruits.count('banana')
print(banana_count) # 3
② 요소 정렬
sort( ) 함수 이용
# sort() : 리스트의 요소를 정렬
fruits = ['apple', 'banana', 'cherry', 'bnana', 'orange', 'banana' ]
fruits.sort()
print(fruits) # ['apple', 'banana', 'banana', 'bnana', 'cherry', 'orange']
③ 요소 역순 정렬
reverse( ) 함수 이용
# reverse() : 리스트의 요소를 역순으로 뒤집음
fruits = ['apple', 'banana', 'cherry', 'bnana', 'orange', 'banana' ]
fruits.reverse() # fruits[::-1]과 동일
print(fruits) # ['banana', 'orange', 'bnana', 'cherry', 'banana', 'apple']
④ 모든 요소 제거
clear( ) 함수 이용
# clear() : 리스트의 모든 요소를 제거
fruits = ['apple', 'banana', 'cherry', 'bnana', 'orange', 'banana' ]
fruits.clear()
print(fruits) # []
'SK 쉴더스 루키즈 > 인프라 활용을 위한 파이썬' 카테고리의 다른 글
[인프라 활용을 위한 파이썬] 함수 (0) | 2025.01.09 |
---|---|
[인프라 활용을 위한 파이썬] 제어문과 컴프리헨션 (0) | 2024.11.22 |
[인프라 활용을 위한 파이썬] 가상 환경, 데이터 타입, 연산자 (0) | 2024.10.24 |