| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 동영상
- Windows Forms
- 언제나 휴일
- c#
- 캡슐화
- 프로젝트
- 무료 동영상 강의
- 소스 코드
- 안드로이드 앱 개발
- 표준 입출력
- 독립기념관
- 동영상 강의
- 충남 천안
- 추천
- 원격 제어 프로그램
- 실습
- 소켓 통신
- 표준 라이브러리 함수
- 졸업 작품 소재
- 언제나휴일
- 유튜브 동영상 강의
- C++
- 네트워크 프로그래밍
- c언어
- 클래스 다이어그램
- 강의
- 알고리즘
- 파이썬
- 실습으로 다지는 c#
- 산책하기 좋은 곳
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
리스트 사용하기 본문
보관
리스트에 요소를 순차 보관할 때 append 메서드를 사용합니다.
리스트에 요소를 순차 보관할 때 append 메서드를 사용합니다.
list.append(요소)
다음은 빈 리스트를 생성한 후 1부터 9까지 순차적으로 보관하는 코드입니다.
[In]
ls = list() #빈 리스트 생성
for i in range(1,10):
ls.append(i)
print(ls)
[Out]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
'a'를 추가해서 확인하면 맨 마지막에 보관하는 것을 알 수 있어요.
[In]
ls.append('a')
print(ls)
[Out]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 'a']
리스트에 원하는 위치에 보관할 때는 insert 메서드를 사용합니다.
list.insert(인덱스, 요소)
다음은 인덱스 2에 'z'를 추가하는 코드입니다.
[In]
ls.insert(2,'z')
print(ls)
[Out]
[1, 2, 'z', 3, 4, 5, 6, 7, 8, 9, 'a']
출력 결과를 보면 원래 인덱스 2부터 그 뒤에 보관한 요소들은 모두 한 칸씩 뒤로 밀려난 것을 알 수 있어요.
리스트 병합
리스트와 리스트를 병합할 때는 extend 메서드를 사용합니다.
list.extend(iterable)
리스트의 extend 메서드는 열거 가능한 컬렉션에 있는 요소들을 순차적으로 보관하는 메서드입니다.
만약, 입력 인자로 다른 리스트가 오면 해당 리스트의 요소들을 자신의 뒤에 보관할 수 있어요.
다음은 ls1에 ls2를 병합하기 위해 extend 메서드를 사용한 코드입니다.
[In]
ls1 = [1,2,3,4]
ls2 = ['a','b','c']
print(ls1)
print(ls2)
ls1.extend(ls2)
print(ls1)
print(ls2)
[Out]
[1, 2, 3, 4]
['a', 'b', 'c']
[1, 2, 3, 4, 'a', 'b', 'c']
['a', 'b', 'c']
출력 결과를 보면 알 수 있듯이 ls1에 ls2의 요소들이 순차 보관한 것을 알 수 있어요.
ls2는 아무런 변화가 없습니다.
삭제
리스트에는 요소를 삭제할 때 pop, remove, clear 메서드를 제공합니다.
pop 메서드는 맨 뒤 혹은 원하는 위치의 요소를 꺼내는 메서드입니다.
remove 메서드는 특정 요소를 삭제하는 메서드입니다.
clear 메서드는 모든 요소를 제거하는 메서드입니다.
먼저 pop 메서드를 알아볼게요.
list.pop([인덱스])
pop메서드에 입력 인자를 전달하지 않으면 맨 마지막 요소를 꺼냅니다. 여기서 꺼낸다는 것은 반환한다는 의미입니다.
[In]
ls = [10,11,12,13,14,15]
print(ls)
re = ls.pop()
print("re:",re)
print(ls)
[Out]
[10, 11, 12, 13, 14, 15]
re: 15
[10, 11, 12, 13, 14]
pop메서드에 입력 인자로 인덱스를 전달하면 해당 위치의 요소를 꺼냅니다.
[In]
re = ls.pop(2)
print("re:",re)
print(ls)
[Out]
re: 12
[10, 11, 13, 14]
list의 remove 메서드는 특정 요소를 제거할 때 사용합니다.
그리고 remve 메서드는 아무런 값도 반환하지 않습니다.
list.remove(요소)
[In]
re = ls.remove(11)
print("re:",re)
print(ls)
[Out]
re: None
[10, 13, 14]
리스트의 모든 요소를 제거할 때는 clear 메서드를 사용하세요.
[In]
ls.clear()
print(ls)
[Out]
[]
연산
파이썬의 리스트는 +와 * 연산을 제공합니다.
+ 연산 결과는 두 개의 리스트의 요소를 병합한 리스트입니다.
[In]
ls1 = [1,2,3]
ls2 = [4,5,6]
ls3 = ls1 + ls2
print(ls3)
[Out]
[1, 2, 3, 4, 5, 6]
*수학의 행렬끼리의 더하기 연산은 numpy 모듈의 array에서 제공합니다. *
리스트와 리스트의 곱하기 연산은 제공하지 않습니다.
[In]
ls4 = ls1 * ls2
print(ls4)
[Out]
TypeError Traceback (most recent call last)
<ipython-input-4-681e77c3302c> in <module>()
----> 1 ls4 = ls1 * ls2
2 print(ls4)
TypeError: can't multiply sequence by non-int of type 'list'
리스트와 정수를 피연산자로 오는 곱하기 연산은 제공합니다.
연산 결과는 리스트에 있는 요소를 정수 배 반복 배치합니다.
[In]
ls5 = ls1*3
print(ls5)
[Out]
[1, 2, 3, 1, 2, 3, 1, 2, 3]
리스트와 리스트의 뺄셈 연산은 제공하지 않아요.
[In]
ls6 = ls2-ls1
print(ls6)
[Out]
TypeError Traceback (most recent call last)
<ipython-input-6-fd6eef6bf286> in <module>()
----> 1 ls6 = ls2-ls1
2 print(ls6)
TypeError: unsupported operand type(s) for -: 'list' and 'list'
*수학의 행렬 연산은 numpy 모듈의 array에서 제공합니다. *
변환
리스트에는 요소를 크기 순으로 정렬하는 sort 메서드와 역순으로 배치하는 reverse 메서드를 제공합니다.
list.sort(key=None,reverse=False)
sort 메서드 확인에 앞서 사용자로부터 5개의 정수를 입력받는 코드를 먼저 작성할게요.
[In]
list1 = list()
for i in range(5):
value = int(input(f"{i+1}번째 >>"))
list1.append(value)
print(list1)
[Out]
1번째 >>6
2번째 >>3
3번째 >>9
4번째 >>7
5번째 >>1
[6, 3, 9, 7, 1]
list의 sort 메서드를 호출하면 크기 순으로 정렬합니다. 기본은 오름차순으로 작은 값부터 배치합니다.
[In]
list1.sort()
print(list1)
[Out]
[1, 3, 6, 7, 9]
내림차순으로 정렬하려면 sort 메서드의 reverse인자를 True로 지정하세요.
[In]
list1.sort(reverse=True)
print(list1)
[Out]
[9, 7, 6, 3, 1]
리스트에는 reverse 메서드를 제공합니다.
reverse 메서드는 역순으로 배치합니다.
[In]
ls=[2,5,3,7,8,1]
ls.reverse()
print(ls)
[Out]
[1, 8, 7, 3, 5, 2]
복사
리스트를 복사할 때는 copy 메서드를 사용하세요.
list.copy()
[In]
ls2 = ls.copy()
print(ls2)
[Out]
[1, 8, 7, 3, 5, 2]
값 위치 확인
리스트에 보관한 요소의 위치를 확인할 때 index 메서드를 사용할 수 있어요.
[In]
ls = [1,5,2,9]
i = ls.index(9)
print(i)
[Out]
3
주의할 점은 보관하지 않은 값을 입력 인자로 전달하면 예외가 발생합니다.
[In]
i = ls.index(11)
print(i)
[Out]
ValueError Traceback (most recent call last)
<ipython-input-19-54fa97013a80> in <module>()
----> 1 i = ls.index(11)
2 print(i)
ValueError: 11 is not in list
for문 이용
리스트 컴프리헨션은 반복 혹은 특정 조건의 요소들로 새 리스트를 만드는 방법입니다.
이해를 위해 리스트 컴프리헨션을 사용하지 않고 새 리스트를 만드는 예제를 먼저 보여드릴게요.
다음은 1부터 20까지 3간격의 요소를 리스트에 순차 보관하는 코드입니다.
[In]
ls = []
for x in range(1,20,3):
ls.append(x)
print(ls)
[Out]
[1, 4, 7, 10, 13, 16, 19]
리스트 컴프리헨션으로 표현하면 다음처럼 표현할 수 있어요.
변수 = [표현 for 변수 in 컬렉션]
[In]
ls = [x for x in range(1,20,3)]
print(ls)
[Out]
[1, 4, 7, 10, 13, 16, 19]
for문 if 사용
이번에는 for문과 if를 사용하는 리스트 컴프리헨션을 알아봅시다.
마찬가지로 리스트 컴프리헨션을 사용하지 않는 코드를 먼저 보여드릴게요.
이번에는 1에서 19까지 3의 배수와 5의 배수로 리스트를 구성합니다.
[In]
ls=[]
for x in range(1,20):
if x%3 == 0 or x%5==0:
ls.append(x)
print(ls)
[Out]
[3, 5, 6, 9, 10, 12, 15, 18]
리스트 컴프리헨션은 다음처럼 표현할 수 있어요.
변수 = [표현 for 변수 in 컬렉션 if 조건]
[In]
ls = [x for x in range(1,20) if x%3==0 or x%5 == 0]
print(ls)
[Out]
[3, 5, 6, 9, 10, 12, 15, 18]
for문 if else 사용
이번에는 for문과 if else를 사용하는 리스트 컴프리헨션을 알아봅시다.
마찬가지로 리스트 컴프리헨션을 사용하지 않는 코드를 먼저 보여드릴게요.
이번에는 1에서 19까지 3의 배수와 5의 배수는 그대로 그 외의 값은 음수를 리스트에 추가할게요.
[In]
ls=[]
for x in range(1,20):
if x%3 == 0 or x%5==0:
ls.append(x)
else:
ls.append(-x)
print(ls)
[Out]
[-1, -2, 3, -4, 5, 6, -7, -8, 9, 10, -11, 12, -13, -14, 15, -16, -17, 18, -19]
리스트 컴프리헨션은 다음처럼 표현할 수 있어요.
변수 = [표현1 if 조건 else 표현2 for 변수 in 컬렉션 ]
표현1은 if 조건이 참일 때, 표현 2는 else 일 때
[In]
ls = [x if x%3==0 or x%5 == 0 else -x for x in range(1,20) ]
print(ls)
[Out]
[-1, -2, 3, -4, 5, 6, -7, -8, 9, 10, -11, 12, -13, -14, 15, -16, -17, 18, -19]
리스트 컴프리헨션 표현은 데이터 분석, 빅데이터, 머신러닝 등의 분야에서 자주 사용하는 표현입니다.
'언휴의 인공지능 프로그래밍 랩 > 파이썬' 카테고리의 다른 글
| 튜플과 리스트 맛보기 (1) | 2026.07.07 |
|---|---|
| 논리와 제어문(조건문, 반복문) (0) | 2026.07.06 |
| 기본 입출력(input, print) 및 포멧 (0) | 2026.07.05 |
| 파이썬 소개 및 자료형(숫자와 문자열) (0) | 2026.07.04 |
