오늘.ssam)
지난 포스트에서 4.리스트와 튜플의 기초 개념을 확인해 보았습니다. 기초적인 개념은 충분히 잡으셨으리라 생각하고 오늘은 바로 리스트 자료형을 레벨업 시키고 구체적으로 어떻게 사용되는 알아보겟습니다.
(리스트의 메소드 10가지 / 슬라이싱 방식 상세히 / 리스트연산 / if 조건문에서 리스트 사용법)
Q1.나)
복습 차원에서 리스트의 개념과 사용법 설명해주세요.

A1.ssam)
리스트(List)는 파이썬에서 가장 많이 사용되는 자료형 중 하나로, 여러 개의 데이터를 하나의 변수에 담아 사용할 수 있도록 해주는 자료형입니다.
리스트는
- 1)대괄호 [ ] 로 표현하며,
- 2)내부적으로 순서가 있으며,
- 3)인덱싱(indexing)과 슬라이싱(slicing)을 통해 자료를 가져오고 수정할 수 있습니다.
- 4)변경 가능한(mutable) 자료형으로,
- 5)추가, 수정, 삭제 등의 연산이 가능합니다.
리스트를 생성할 때는
- 6)대괄호 [ ] 안에 원하는 값을 쉼표(,)로 구분하여 넣으면 됩니다. 또한
- 7)리스트 안에는 여러 종류의 데이터를 함께 담을 수 있으며,
- 8)다른 리스트도 포함시킬 수 있습니다.
예시 코드를 통해 리스트를 생성하고 활용하는 방법을 알아보겠습니다.
# 리스트 생성하기
my_list = [1, 2, 3, "four", "five", 6.0, [7, 8, 9]]
# 리스트 출력하기
print(my_list) #출력 : [1, 2, 3, 'four', 'five', 6.0, [7, 8, 9]]
# 리스트 인덱싱
print(my_list[0]) # 출력 : 1
print(my_list[3]) # 출력 :'four'
print(my_list[-1]) # 출력 : [7, 8, 9]
# 리스트 슬라이싱
print(my_list[1:4]) # 출력 : [2, 3, 'four']
print(my_list[5:]) # 출력 : [6.0, [7, 8, 9]]
# 리스트 값 변경
my_list[3] = 4
print(my_list) # 출력 : [1, 2, 3, 4, 'five', 6.0, [7, 8, 9]]
# 리스트 값 추가
my_list.append(10)
print(my_list) # 출력 : [1, 2, 3, 4, 'five', 6.0, [7, 8, 9], 10]
# 리스트 값 삭제
del my_list[4]
print(my_list) # 출력 : [1, 2, 3, 4, 6.0, [7, 8, 9], 10]
# 2와 4의 위치를 교환하기 (다중 할당)
my_list[1], my_list[3] = my_list[3], my_list[1]
print(my_list) # 출력 : [1, 4, 3, 2, 6.0, [7, 8, 9], 10]
위의 예시 코드에서는 리스트를 생성하고, 인덱싱과 슬라이싱을 통해 값을 가져오고, 인덱스를 이용해 값을 변경하고, append() 함수를 사용해 값을 추가하고, del 키워드를 사용해 값을 삭제하는 방법을 보여줍니다.
가끔 리스트의 자료값의 위치를 바꾸고 싶을때 가 있습니다. 그때는 다중할당으로 편하게 하시면됩니다.
Q2.나)
파이썬에서 리스트에 사용가능한 메서드를 제공한다고 했는데 알려주세요.
A2.ssam)
기본적으로 많이 쓰이는 메소드 들입니다.
- append(x) : 리스트의 맨 끝에 x를 추가합니다.
- extend(iterable) : 리스트의 맨 끝에 iterable의 모든 항목을 추가합니다.
- insert(i, x) : 리스트의 i번째 위치에 x를 삽입합니다.
- remove(x) : 리스트에서 값이 x인 첫 번째 항목을 삭제합니다.
- pop([i]) : 리스트에서 i번째 위치의 항목을 삭제하고 그 값을 반환합니다. 인덱스 i를 지정하지 않으면, 리스트의 마지막 항목이 삭제됩니다.
- clear() : 리스트의 모든 항목을 삭제합니다.
- index(x[, start[, end]]) : 리스트에서 값이 x인 첫 번째 항목의 인덱스를 반환합니다. start와 end 인덱스를 지정하면 그 범위 내에서 검색합니다.
- count(x) : 리스트에서 값이 x인 항목의 개수를 반환합니다.
- sort(key=None, reverse=False) : 리스트의 항목을 정렬합니다. key를 지정하면 그 함수를 기준으로 정렬합니다. reverse를 True로 설정하면 내림차순으로 정렬합니다.
- reverse() : 리스트의 항목을 역순으로 정렬합니다.
- copy() : 리스트의 얕은 복사본을 반환합니다.
아래는 메소드 함수 사용 예시 입니다.(1/2/3 은 추가 관련함수 - 4/5/6 은 삭제 관련함수 - 나머지 기타)
# 리스트 생성
my_list = [4, 1, 3, 2, 5]
# append(x) 메소드를 이용하여 6 추가
my_list.append(6)
print(my_list)
# 출력 : [4, 1, 3, 2, 5, 6]
# extend(iterable) 메소드를 이용하여 [7, 8, 9] 추가
my_list.extend([7, 8, 9])
print(my_list)
# 출력 : [4, 1, 3, 2, 5, 6, 7, 8, 9]
# insert(i, x) 메소드를 이용하여 0을 0번째 인덱스에 삽입
my_list.insert(0, 0)
print(my_list)
# 출력 : [0, 4, 1, 3, 2, 5, 6, 7, 8, 9]
# remove(x) 메소드를 이용하여 3 삭제
my_list.remove(3)
print(my_list)
# 출력 : [0, 4, 1, 2, 5, 6, 7, 8, 9]
# pop([i]) 메소드를 이용하여 5번째 인덱스 삭제 후 값 반환
deleted_value = my_list.pop(5)
print(my_list)
print(deleted_value)
# 출력 : [0, 4, 1, 2, 5, 7, 8, 9]
# 출력 : 6
# clear() 메소드를 이용하여 모든 항목 삭제
my_list.clear()
print(my_list)
# 출력 : []
# index(x[, start[, end]]) 메소드를 이용하여 값이 7인 인덱스 찾기
my_list = [3, 7, 1, 4, 7, 2, 7]
index_7 = my_list.index(7)
print(index_7)
# 출력 : 1
# count(x) 메소드를 이용하여 값이 7인 항목 개수 세기
count_7 = my_list.count(7)
print(count_7)
# 출력 : 3
# sort() 메소드를 이용하여 정렬하기
my_list.sort()
print(my_list)
# 출력 : [1, 2, 3, 4, 7, 7, 7]
# reverse() 메소드를 이용하여 역순으로 정렬하기
my_list.reverse()
print(my_list)
# 출력 : [7, 7, 7, 4, 3, 2, 1]
# copy() 메소드를 이용하여 리스트의 얕은 복사본 만들기
my_list_copy = my_list.copy()
print(my_list_copy)
# 출력 : [7, 7, 7, 4, 3, 2, 1]
Q3.나)
리스트 슬라이싱 대해서 상세히 알려주세요.
A3.ssam)
리스트 슬라이싱(List Slicing) : 리스트의 일부를 복사하여 새로운 리스트를 만들어내므로, 원본 리스트는 변경되지 않습니다.
리스트 슬라이싱은 대괄호([])를 이용하여 다음과 같은 형식으로 작성합니다.
list[start:end:step]
- start : 슬라이싱을 시작할 인덱스. 생략하면 0으로 간주됩니다.
- end : 슬라이싱을 끝낼 인덱스. 해당 인덱스의 항목은 포함되지 않습니다. 생략하면 리스트의 끝(end)으로 간주됩니다.
- step : 슬라이싱할 항목을 가져오는 간격. 생략하면 1로 간주됩니다.
예를 들어, 다음과 같은 리스트가 있다고 가정합니다.
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
이 리스트에서 2번째부터 5번째까지(리스트는 0번째부터 시작, 5번째는 포함하지 않음,) 추출하려면 다음과 같이 슬라이싱을 사용할 수 있습니다.
>>> numbers[2:5]
[2, 3, 4]
start와 end를 생략하면, 리스트의 전체를 추출할 수 있습니다.
>>> numbers[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
step을 사용하여 리스트에서 일정한 간격으로 추출할 수 있습니다.
>>> numbers[::2]
[0, 2, 4, 6, 8]
리스트 슬라이싱은 리스트 뿐만 아니라, 문자열, 튜플 등 다양한 시퀀스(sequence) 자료형에서도 사용할 수 있습니다.
Q4.나)
리스트 연산은 어떤방식인가요?
A4.ssam)
파이썬에서 리스트(List)는 다음과 같은 연산을 지원합니다.
1)리스트 결합(List Concatenation) : + 연산자를 사용하여 두 개의 리스트를 결합합니다.
>>> list1 = [1, 2, 3]
>>> list2 = [4, 5, 6]
>>> result = list1 + list2
>>> print(result)
[1, 2, 3, 4, 5, 6]
2)리스트 반복(List Repetition) : * 연산자를 사용하여 리스트를 반복합니다.
>>> list1 = [1, 2, 3]
>>> result = list1 * 3
>>> print(result)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
리스트 결합 연산은 두 리스트를 이어붙여서 새로운 리스트를 만들어내고, 리스트 반복 연산은 리스트를 지정된 횟수만큼 반복하여 새로운 리스트를 만들어냅니다.
두 연산 모두 원본 리스트는 변경되지 않습니다. 새로운 리스트를 생성하기 때문에, 메모리 사용량이 증가할 수 있으므로, 리스트 크기가 크거나 연산이 빈번히 수행될 경우 메모리 사용량에 유의해야 합니다.
Q5.나)
if의 조건문에 리스트를 사용하는 방법에 대해서 알려주세요.
A5.ssam)
네, if 조건문에 리스트(List)를 사용하는 방법으로는, 다음과 같은 예시가 있습니다.
1)리스트에 특정 값이 있는지 확인하기( if ~~ in ~~ )
my_list = [1, 2, 3, 4, 5]
if 3 in my_list:
print('3 is in the list')
else:
print('3 is not in the list')
위 코드에서는 if 조건문에 in 키워드를 이용하여, 3이 my_list 리스트에 포함되어 있는지를 확인합니다. 만약 포함되어 있다면 "3 is in the list"라는 문자열을 출력하고, 그렇지 않으면 "3 is not in the list"라는 문자열을 출력합니다.
2)리스트의 길이가 특정 값 이상인지 확인하기 ( len() )
my_list = [1, 2, 3, 4, 5]
if len(my_list) >= 5:
print('my_list has 5 or more items')
else:
print('my_list has less than 5 items')
위 코드에서는 if 조건문에 len 함수를 이용하여, my_list 리스트의 길이가 5 이상인지를 확인합니다. 만약 5 이상이라면 "my_list has 5 or more items"라는 문자열을 출력하고, 그렇지 않으면 "my_list has less than 5 items"라는 문자열을 출력합니다.
3)리스트가 비어있는지 확인하기
my_list = [1, 2, 3]
if not my_list:
print('my_list is empty')
else:
print('my_list is not empty')
위 코드에서는 if 조건문에 not 키워드를 이용하여, my_list 리스트가 비어있는지를 확인합니다. 만약 비어있다면 "my_list is empty"라는 문자열을 출력하고, 그렇지 않으면 "my_list is not empty"라는 문자열을 출력합니다.
따라서 if 조건문에 리스트를 사용하여, 리스트의 값을 확인하거나 리스트의 상태를 판단하는 다양한 기능을 구현할 수 있습니다.
Last.ssam)
여기까지가 파이썬 리스트 총정리 1부입니다. 지금까지 잘 따라 오셨다면 "아~ 이렇게도 사용하는구나 나중에 써먹어야지" 정도만 생각하시면 됩니다.
Last.ssam)
아래에 오늘 질문 List 입니다.
'프로그래밍 > 파이썬 Python' 카테고리의 다른 글
[파이썬 문법] 5-1-딕셔너리 자료형 총정리 - 질문으로 공부하기 (0) | 2023.04.06 |
---|---|
[파이썬 문법] 5.딕셔너리와 집합 기초개념[예시50개씩] - 질문으로 공부하기 (0) | 2023.04.05 |
[파이썬 문법] 4-2. 튜플 자료형 총정리 - 질문으로 공부하기 (0) | 2023.04.05 |
[파이썬 문법] 4-1. 리스트 자료형 총정리2부 - 질문으로 공부하기 (0) | 2023.04.04 |
[파이썬 문법] 4. 리스트와 튜플 기초개념[장단점,예시50개] - 질문으로 공부하는 (0) | 2023.04.04 |
[파이썬 문법] 3-2. 함수 반환값 (return) [초보용] - 질문으로 공부하는 (0) | 2023.04.03 |
[파이썬 문법] 3-1. 함수호출(위치,키워드) [초보용] - 질문으로 공부하는 (0) | 2023.04.03 |
[파이썬 문법] 3. 함수의 기초 [초보용] - 질문으로 공부하는 (0) | 2023.04.02 |
댓글