리스트
리스트란?
• 순서가 있는 객체의 집합이다.
• List는 [ ] 대괄호로 묶어주고 각각의 원소는 ,로 구분합니다.
• 삽입, 삭제, 수정이 가능합니다.
1. 리스트 만들기
>>> [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] >>> a = [1, 2, 3, 4, 5] >>> a [1, 2, 3, 4, 5] >>> type(a) <class 'list'> |
2. 리스트의 각각의 원소를 인덱스로 출력 (인덱스는 0부터 시작)
>>> a = [1, 2, 3, 4, 5] >>> a[0] 1 >>> a[2] 3 |
리스트의 인덱스는 0부터 시작합니다. 그래서 a[0]는 1이 출력되고 a[1]은 2가 출력됩니다.
>>> a = [1, 2, 3, 4, 5] >>> a[-1] 5 >>> a[-2] 4 >>> a[-3] 3 |
a[-1]에서 -1은 리스트의 마지막 요소를 의미합니다. 그래서 a[-1]는 5가 출력되고 a[-2]은 4가 출력됩니다.
3. 리스트의 개수 출력(len()함수 사용)
>>> a = [1, 2, 3, 4, 5] >>> len(a) 5 |
4. 리스트를 사용하는 합계구하기
a = [0, 0, 0, 0, 0] sum = 0 a[0] = 10 a[1] = 20 a[2] = 30 a[3] = 40 a[4] = 50 sum = a[0] + a[1] + a[2] + a[3] + a[4] print('합계 : ' , sum) |
숫자를 입력받아 합계구하기
a = [0, 0, 0, 0, 0] sum = 0 a[0] = int(input('숫자1 : ')) a[1] = int(input('숫자2 : ')) a[2] = int(input('숫자3 : ')) a[3] = int(input('숫자4 : ')) a[4] = int(input('숫자5 : ')) sum = a[0] + a[1] + a[2] + a[3] + a[4] print('합계 : ' , sum) |
5. 빈 리스트를 생성하여 항목을 추가하고 출력해보자. ( 함수 : append() )
a = [] a.append(10) a.append(20) a.append(30) a.append(40) a.append(50) print(a) |
반복문을 통해 10번 반복하면서 a리스트에 i값을 추가하고 리스트의 총 개수를 출력해 보자
a = [] for i in range(0, 10) : a.append(i) print('a[%d] = %d, ' %(i, i), end=" ") print("\n총개수 : ",len(a)) |
빈 리스트를 5개의 데이터를 0값으로 추가하고 리스트의 0번째부터 값을 입력하여 합계를 출력해 보자.
sum = 0 a = [] for i in range(0, 5) : a.append(0) for i in range(0, 5) : a[i] = int(input(str(i+1) + "번째 숫자 : ")) sum = sum + a[i] print("합계 : ", sum) |
리스트의 생성과 초기화
리스트는 대괄호 [ ]로 생성하고 다양하게 생성하는 코드이다.
a = [] # 빈 리스트 생성 a = [10, 20, 30] # 정수 데이터 리스트 a = ['파이썬', '컴퓨터', '강의'] # 문자열 데이터 리스트 a = [10, 20, '파이썬'] # 다양한 데이터형 리스트 |
리스트 값에 접근하는 다양한 방법
a = [10, 20, 30, 40, 50] print(a[0:3]) # 0번째부터 2번째 인덱스까지 print(a[3:4]) # 3반째부터 3반째 인덱스까지 print(a[2:]) # 2번째 부터 끝까지 print(a[:3]) # 0번째 부터 2번째 인덱스까지 |
a = [10, 20, 30, 40, 50] b = [60, 70, 80] print(a + b) # a리스트와 b리스트 출력 print(b * 3) # b리스트 데이터를 3반 반복하여 출력 print(a[::2]) # 앞에서 부터 2칸씩 건터뛰면서 추출 print(a[::3]) # 앞에서 부터 3칸씩 건터뛰면서 추출 print(a[::-2]) # 뒤에서 부터 2칸씩 건터뛰면서 추출 print(a[::-1]) # 뒤에서 부터 1칸씩 건터뛰면서 추출 |
리스트 값을 변경
a[1]는 20인데 "a[1] = 100"을 통해 리스트 1번째 인덱스에 값 100을 대입하여 변경하였습니다.
연속된 범위에 값을 변경할 수 있습니다. 위 그림처럼 a[1:3]은 리스트의 1번째부터 다음 (3-1)번째까지 변경하라는 의미입니다. 그래서 60, 70, 80이 나오고 40과 50이 이어서 출력되는 것을 알 수 있습니다.
참고로 아래 그림과 같이 출력해 보겠습니다. (잘 사용하지 않는 방법입니다.)
리스트의 항목을 삭제해 보자. ( 함수 : del() )
여러 개의 항목을 삭제하기
리스트 자체를 삭제하는 방법
리스트에 []나 None를 입력하여 리스트의 항목 전부를 삭제할 수 있습니다.
리스트 함수
함수 | 설명 | 사용 예 |
append() | 리스트끝에 항목 추가 | 리스트명.append(값) |
del() | 리스트에서 지정한 항목을 삭제 | del(리스트명[인덱스위치]) |
len() | 리스트의 전체 항목의 개수를 반환 | len(리스트명) |
index() | 지정한 값을 찾아 해당 위치를 반환 | 리스트명.index(찾을값) |
insert() | 지정된 위치에 값을 삽입 | 리스트명.insert(위치, 값) |
remove() | 지정한 값을 삭제, 값이 여러개 이면 첫번째 값만 삭제 | 리스트명.remove(지울값) |
sort() | 리스트의 항목을 정렬 | 리스트명.sort() |
reverse() | 리스트의 항목을 역순으로 만듬 | 리스트명.reverse() |
count() | 리스트에서 해당 값의 개수를 반환 | 리스트명.count(값) |
copy() | 리스트의 내용을 새로운 리스트에 복사 | 새리스트 = 리스트명.copy() |
clear() | 리스트의 내용을 모두 지운다. | 리스트명.clear() |
pop() | 리스트끝에 항목을 삭제 | 리스트명.pop() |
extend() | 리스트 뒤에 리스트를 추가, 리스트의 + 연산과 같은 기능 | 리스트명.extend(리스트명) |
sorted() | 리스트 항목을 정렬하고 새로운 리스트에 대입한다. | 새리스트 = sorted(리스트명) |
append() 함수 사용하기 list = [20, 40, 30, 50, 10]
# 60과 70을 추가 list.append(60) list.append(70) print('추가된 리스트 : ', end='') print(list); print() |
출력 결과 추가된 리스트 : [20, 40, 30, 50, 10, 60, 70] |
del() 함수 사용하기 list = [20, 40, 30, 50, 10, 60, 70]
# 60과 70을 삭제 del(list[5]) del(list[5]) print('삭제된 리스트 : ', end='') print(list); print() |
출력 결과 삭제된 리스트 : [20, 40, 30, 50, 10] |
len() 함수 사용하기 list = [20, 40, 30, 50, 10]
# 리스트 항목 갯수 출력 print('리스트 길이 : ', end='') print(len(list)); print() |
출력 결과 리스트 길이 : 5 |
index() 함수 사용하기 list = [20, 40, 30, 50, 10]
# 리스트에서 값 찾기 print('리스트에서 50의 위치 : ', end='') print(list.index(50)); print() |
출력 결과 리스트에서 50의 위치 : 3 |
insert() 함수 사용하기 list = [20, 40, 30, 50, 10]
# 리스트에서 위치를 지정하여 삽입하기 list.insert(1, 100) print('리스트 두번째에 100 삽입하기 : ', end='') print(list); print() |
출력 결과 리스트 두번째에 100 삽입하기 : [20, 100, 40, 30, 50, 10] |
remove() 함수 사용하기 list = [20, 100, 40, 30, 50, 10]
# 리스트에서 100값을 삭제하기 list.remove(100) print('리스트에서 값100을 삭제 : ', end='') print(list); print() |
출력 결과
리스트에서 값100을 삭제 : [20, 40, 30, 50, 10] |
sort() 함수 사용하기 list = [20, 40, 30, 50, 10]
# 리스트 정렬하기 (오름차순) list.sort() print('리스트 오름차순 정렬 : ', end='') print(list)
# 리스트 정렬하기 (내림차순) list.sort(reverse=True) print('리스트 내림차순 정렬 : ', end='') print(list); print() |
출력 결과 리스트 오름차순 정렬 : [10, 20, 30, 40, 50] 리스트 내림차순 정렬 : [50, 40, 30, 20, 10] |
reverse() 함수 사용하기 list = [50, 40, 30, 20, 10]
# 리스트 역순으로 만들기 list.reverse() print('리스트 역순으로 만들기 : ', end='') print(list); print() |
출력 결과 리스트 역순으로 만들기 : [10, 20, 30, 40, 50] |
count() 함수 사용하기 list = [10, 20, 30, 40, 50]
# 리스트에서 값20의 개수를 반환하기(우선 값20을 하나추가하고 실행) list.append(20) list.count(20) print('리스트 항목 : ', end='') print(list) print('리스트에서 값 20의 갯수는 : ', end='') print(list.count(20)); print() |
출력 결과 리스트 항목 : [10, 20, 30, 40, 50, 20] 리스트에서 값 20의 갯수는 : 2 |
copy() 함수 사용하기 list = [10, 20, 30, 40, 50, 20]
# newlist를 만들고 복사하기 newlist = [] newlist = list.copy() print('리스트 출력 : ', end='') print(list) print('복사된 newlist 출력 : ', end='') print(newlist); print() |
출력 결과 리스트 출력 : [10, 20, 30, 40, 50, 20] 복사된 newlist 출력 : [10, 20, 30, 40, 50, 20] |
clear() 함수 사용하기 newlist = [10, 20, 30, 40, 50, 20]
# newlist 항목 삭제하기 newlist.clear() print('newlist 항목삭제 : ', end='') print(newlist); print() |
출력 결과 newlist 항목삭제 : [] |
pop() 함수 사용하기 list = [10, 20, 30, 40, 50, 20]
# list의 끝항목 삭제하기 print('이전 리스트 항목 : ', end='') print(list) list.pop() print('현재 리스트 항목 : ', end='') print(list); print() |
출력 결과 이전 리스트 항목 : [10, 20, 30, 40, 50, 20] 현재 리스트 항목 : [10, 20, 30, 40, 50] |
extend() 함수 사용하기 list = [10, 20, 30, 40, 50]
# 새로운 리스트 추가하기 newlist = [100, 200, 300, 400] print('이전 리스트 항목 : ', end='') print(list) list.extend(newlist) print('추가된 리스트 : ', end='') print(list); print() |
출력 결과 이전 리스트 항목 : [10, 20, 30, 40, 50] 추가된 리스트 : [10, 20, 30, 40, 50, 100, 200, 300, 400] |
sorted() 함수 사용하기
# 리스트를 정렬하고 새로운 리스트에 대입 oldlist = [50, 10, 40, 20, 30] newlist = [] print('이전 리스트 항목 : ', end='') print(oldlist) newlist = sorted(oldlist) print('새로운 리스트 : ', end='') print(newlist); print() |
출력 결과 이전 리스트 항목 : [50, 10, 40, 20, 30] 새로운 리스트 : [10, 20, 30, 40, 50] |
2차원 리스트
2차원 리스트는 1차원 리스트를 여러 개를 연결한 것으로 첨자를 2개 사용하고 행과 열로 이루어진 리스트를 말한다.
>>> a = [[10, 20], [30, 40], [50, 60]] >>> a [[10, 20], [30, 40], [50, 60]] >>> a[0][0] 10 >>> a[0][1] 20 >>> a[1][0] 30 >>> a[1][1] 40 >>> a[2][0] 50 >>> a[2][1] 60 |
가로의 크기가 불규칙한 톱니형 리스트도 있습니다.
a = [ [10, 20], [30, 40, 50], [60], [70, 80, 90], [100] ] |
list = [ [10, 20], [30, 40, 50], [60], [70, 80, 90], [100] ] for i in range(0, 5) : print(list[i]) |
실행 결과 [10, 20] [30, 40, 50] [60] [70, 80, 90] [100] |
리스트에 리스트를 추가하여 2차원 리스트를 만들어보자.
list = [] list1 = [] num = 1
for i in range(0, 3) : for j in range(0, 3) : list.append(num) num = num + 1 list1.append(list) list = []
for i in range(0, 3) : for j in range(0, 3) : print('%2d' %list1[i][j], end=" ") print() |
실행 결과
1 2 3 4 5 6 7 8 9 |
range() 함수
range(10)은 0부터 9까지 숫자를 생성합니다. ( 0 1 2 3 4 5 6 7 8 9 )
range(3, 7)은 3부터 6까지 숫자를 생성합니다. ( 3 4 5 6 )
range(1, 10, 2)은 1부터 2씩 증가하면서 9까지 숫자를 생성합니다. ( 1 3 5 7 9 )
range() 함수를 이용하여 리스트를 만들어보자.
range(5)를 입력하여 0부터 4까지 숫자가 들어간 리스트를 생성해 보겠습니다. range(실행횟수)
>>> a = list(range(5)) >>> a 0 1 2 3 4 |
range(3, 7)를 입력하여 3부터 6까지 숫자가 들어간 리스트를 생성해 보겠습니다. range(시작, 끝)
>>> a = list(range(3, 6)) >>> a 3 4 5 |
range(1, 10, 2)를 입력하여 1부터 2씩 증가하면서 9까지 숫자가 들어간 리스트를 생성해 보겠습니다. range(시작, 끝, 증감식)
>>> a = list(range(1, 10, 2)) >>> a 1 3 5 7 9 |
i, sum, num_list = 0, 0, [] num_list = input().split() while True: n = int(num_list[i]) sum += n if n >= 100: break i = i + 1 print(sum) print("%.1f" %(sum/(i+1))) |
n = 0 while True: n = int(input()) if n == -1: break if n % 3 == 0: print('%d' %(n / 3)) |
num_list, cnt, n, i = [], 0, 0, 0 num_list = input().split() while True: n = int(num_list[i]) if n == 0: break if n % 3 != 0 and n % 5 != 0: cnt = cnt + 1 i = i + 1 print(cnt) |
'프로그램언어 > 파이썬' 카테고리의 다른 글
5강 딕셔너리 (0) | 2020.07.15 |
---|---|
4강 튜플 (0) | 2020.07.14 |
2강 숫자계산과 연산자 (0) | 2020.06.17 |
1.강 Hello world 출력 (1) | 2020.06.17 |
거북이 글자쓰기(모듈버전) (0) | 2020.06.04 |