1. 리스트란?
다양한 데이터 유형의 요소를 저장할 수 있는 데이터 구조이다.
리스트는 변경 가능하며, 순서가 있고, 중복된 요소를 포함할 수 있다.
2. 리스트 생성
리스트는 대괄호 [ ] 안에 요소를 쉼표로 구분하거나, list( ) 생성자를 사용하여 만들 수 있다
# 기본 구조
리스트 명 = [ 요소 ]
my_list = [1, 2, 3]
another_list = list()
3. 리스트 요소 접근
리스트의 요소에 접근하기 위해서 인덱스를 사용한다.
길이가 n인 리스트의 인덱스는 0 ~ n-1 까지의 이덱스를 가진다.
또한 음수 인덱스를 사용할 수 있다.
my_list = ['apple', 'banana', 'cherry']
# 0 1 2
-3 -2 -1
print(my_list[1]) # banana 출력
print(my_list[-1]) # cherry 출력
print(my_list[-2]) # banana 출력
4. 리스트 슬라이싱
여러 요소를 한 번에 접근할 때 사용한다.
슬라이싱은 [시작 인덱스: 끝 인덱스] 형식을 사용한다. 끝 인덱스는 포함하지 않는다.
my_list = [0, 1, 2, 3, 4, 5]
print(my_list[2:5]) # [2, 3, 4] 출력
추가적으로 스텝을 지정할 수 있다.
[시작 인덱스 : 끝 인덱스 : 스텝 ]
이것을 통해서 요소를 건너뛰며 접근할 수 있다.
my_list = [0, 1, 2, 3, 4, 5]
print(my_list[::2]) # 처음부터 끝까지 2칸씩 건너뛰며 -> 0, 2, 4
5. 리스트 수정
5.1 요소 추가
- append() 메서드 : 리스트의 끝에 새로운 요소를 추가한다.
fruits = ['사과', '바나나']
fruits.append('체리')
print(fruits) # ['사과', '바나나', '체리']
- insert() 메서드 : 지정된 인덱스 위치에 요소를 삽입한다. 기존 위치의 요소는 뒤로 밀린다.
fruits = ['사과', '바나나', '체리']
fruits.insert(1, '오렌지')
print(fruits) # ['사과', '오렌지', '바나나', '체리']
- extend() 메서드 : 다른 리스트의 요소를 현재 리스트에 추가
fruits = ['사과', '오렌지', '바나나', '체리']
more_fruits = ['망고', '포도']
fruits.extend(more_fruits)
# 또는
fruits += more_fruits
print(fruits) # ['사과', '오렌지', '바나나', '체리', '망고', '포도']
5.2 요소 삭제
- remove() : 리스트에서 첫 번째로 발견되는 지정된 값을 삭제
fruits = ['사과', '오렌지', '바나나' ,'체리', '망고', '포도']
fruits.remove('바나나')
print(fruits) # ['사과', '오렌지', '체리', '망고', '포도']
- pop() : 인덱스로 리스트의 특정 요소 또는 슬라이스를 삭제
fruits = ['사과', '오렌지', '바나나' ,'체리', '망고', '포도']
removed = fruits.pop(1)
print(removed) # '오렌지'
print(fruits) # ['사과', '바나나' ,'체리', '망고', '포도']
- del() : 인덱스로 리스트의 특정 요소 또는 슬라이스를 삭제할 수 있다.
fruits = ['사과', '오렌지', '바나나' ,'체리', '망고', '포도']
del fruits[0:2]
print(fruits) # ['체리', '망고', '포도']
5.3 요소 교체
특정 요소를 다른 요소로 교체 하려면 인덱싱을 사용하여 새 값을 할당
fruits = ['사과', '오렌지', '바나나' ,'체리', '망고', '포도']
fruits[0] = '복숭아'
print(fruits) # ['복숭아', '오렌지', '바나나' ,'체리', '망고', '포도']
6. 리스트 연산하기
6.1 리스트 더하기
두 개의 리스트를 합쳐서 새로운 리스트를 만든다.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
print(combined_list) # [1, 2, 3, 4, 5, 6]
6.2 리스트 곱하기
곱셈 연산자를 사용하여 리스트를 주어진 횟수만큼 반복해서 새로운 리스트를 만든다.
list1 = ['a', 'b']
repeated_list = list1 * 3
print(repeated_list) # ['a', 'b', 'a', 'b', 'a', 'b']
7. 기타 함수
7.1 리스트 길이 구하기
리스트의 길이 즉, 리스트에 포함된 요소의 개수를 구하기 위해서 len( ) 함수를 사용
my_list = [1, 2, 3, 4, 5]
list_length = len(my_list)
print(list_length) # 출력: 5
7.2 요소의 개수 및 인덱스 반환
7.2.1 요소의 개수 : count( )
특정 요소가 몇 번 등장하는지 세어주는 메서드이다.
my_list = [1, 2, 3, 2, 2, 4]
count = my_list.count(2) # 2의 개수를 센다.
print(count) # 출력: 3
7.2.2 요소의 인덱스 : index( )
특정 요소의 인덱스를 찾아주는 메서드이다.
요소가 중복된다면 가장 먼저 등장하는 요소의 인덱스를 반환한다.
my_list = [1, 2, 3, 2, 2, 4]
index = my_list.index(2) # 2의 첫 번째 인덱스를 찾는다.
print(index) # 출력: 1
7.3 리스트 정렬 및 뒤집기
7.3.1 리스트 정렬하기
sort( ) 메서드는 리스트의 요소들을 오름차순으로 정렬한다.
reverse = True를 사용하여 내림차순으로 정리할 수도 있다.
my_list = [3, 1, 4, 1, 5]
my_list.sort()
print(my_list) # [1, 1, 3, 4, 5] 오름차순 정렬
my_list.sort(reverse=True)
print(my_list) # [5, 4, 3, 1, 1] 내림차순 정렬
리스트를 바꾸지 않고 새 리스트를 얻고 싶다면 sorted( ) 함수를 사용할 수 있다.
my_list = [3, 1, 4, 1, 5]
sorted_list = sorted(my_list)
print(sorted_list) # [1, 1, 3, 4, 5]
7.3.2 리스트 뒤집기
reverse( )메서드는 리스트의 요소 순서를 뒤집는다.
my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list) # [5, 4, 3, 2, 1]
원본 리스트를 바꾸지 않고 새 리스트를 얻고 싶다면 reversed( ) 함수를 사용할 수 있다.
단, 결과를 list 형태로 얻으려면 list( ) 함수를 사용해야 한다.
my_list = [1, 2, 3, 4, 5]
# reversed() 함수 사용
reversed_iterator = reversed(my_list)
# Iterator를 리스트로 변환
reversed_list = list(reversed_iterator)
print(reversed_list) # [5, 4, 3, 2, 1]
8. 리스트와 if, for문
8.1 for문
리스트 내의 각 항목에 대해 순차적으로 접근한다.
fruits = ["사과", "바나나", "체리"]
# for 루프를 사용하여 리스트 내의 각 항목에 대해 반복
for fruit in fruits:
print(fruit)
또는, enumerate( ) 함수를 사용해서 인덱스와 함께 각 요소에 접근할 수 있다.
fruits = ["사과", "바나나", "체리"]
# enumerate() 함수를 사용하여 인덱스와 함께 리스트 항목에 대해 반복
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
8.2 if문
데이터 필터링 또는 특정 조건에 따른 작업 수행 시 사용한다.
fruit_list = ["사과", "바나나", "체리", "딸기", "포도"]
selected_fruits = []
# fruit_list에서 글자 수가 3글자인 과일만 선택하여 새 리스트에 추가
for fruit in fruit_list:
if len(fruit) == 3:
selected_fruits.append(fruit)
print(selected_fruits)
9. 리스트 컴프리헨션
리스트를 간편하게 생성하는 방법이다.
[표현식 for 항목 in 반복가능객체 if 조건문]
# 0부터 9까지 숫자의 제곱을 원소로 갖는 리스트 생성
squares = [x**2 for x in range(10)]
print(squares)
9.1 조건문 추가
if문을 추가하여 조건을 만족하는 요소만 리스트에 추가할 수 있다.
# 0부터 9까지 숫자 중 짝수의 제곱만을 원소로 갖는 리스트 생성
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)
9.2 중첩 반복문
# 두 개의 리스트에서 가능한 모든 조합 생성
pairs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
print(pairs)
참고 문헌
'Language > Python' 카테고리의 다른 글
[Python] 딕셔너리 (0) | 2024.04.24 |
---|---|
[Python] 튜플 (0) | 2024.04.23 |
[Python] 반복문 (0) | 2024.04.23 |
[Python] 조건문 (0) | 2024.04.23 |
[Python] 불리언 (2) | 2024.04.22 |