list1 = list() print(list1, type(list1))list2 = [] print(list2, type(list2))list3 = [1, 2, 3, 4, 5] print(list3, type(list3))list4 = [1] print(list4, type(list4))list5 = [1, 2, 3, 1.1, 2.2, 'A', True, (1,2,3)] print(list5, type(list5))출력 : <class 'list'> 출력 : <class 'list'> 출력 : [1, 2, 3, 4, 5] <class 'list'> 출력 : [1] <class 'list'> 출력 : [1, 2, 3, 1.1, 2.2 'A', True, (1, 2, 3)] <class 'list'>
리스트의 인덱스
+-----+-----+-----+-----+-----+-----+ | 1 | "2" | "a" | "d" | 1.2 | 5 | +-----+-----+-----+-----+-----+-----+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1list1 = [1, "2", "a", "d", 5] print(len(list1)) # 리스트의 길이print(list1[:]) # 전체 리스트 print(list1[3]) # 앞에서 네번째 데이터, 3번 인덱스의 데이터 print(list1[-4]) # 뒤에서 네번째 데이터, 2번 인덱스의 데이터 print(list1[:2]) # 앞에서 2번째 까지 print(list1[2:]) # 앞에서 2번째 이후 부터 print(list1[2:4]) # 인텍스 2에서 부터 4 까지 부분리스트 print(list1[:-4]) # 처음부터 뒤에서 네번째 까지 print(list1[-4:]) # 마지막 네개의 데이터출력 : 5 출력 : [1, '2', 'a', 'd' 5] 출력 : d 출력 : 2 출력 : [1, '2'] 출력 : ['a', 'd', 5] 출력 : ['a', 'd'] 출력 : [1] 출력 : ['2', 'a', 'd', 5]
리스트 활용 예시
list1 = ["홍길동", 24, "남자", 1990, 5, 31, "010-1234-5678", ["아빠", "엄마", "동생"]]print("이름:", list1[0]) print("전화번호:", list1[6]) print("생년월일:", list1[3:6]) print("가족:", list1[-1])출력 - 이름 : 홍길동 출력 - 전화번호 : 010-1234-5678 출력 - 생년월일 : [1990, 5, 31] 출력 - 가족 : ['아빠', '엄마', '동생']
1차원 리스트
list1 = [1, 2, 3, 4] print(list1) print(list1[3]) # 3번째 원소출력 : [1, 2, 3, 4] 출력 : 42차원 리스트
list2 = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16] ] print(list2) print(list2[2][3]) # 2번 인덱스 행의, 3번 인덱스 열의 원소 (3행의 4열 원소)출력 : [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] 출력 : 123차원 리스트
list3 = [ [ [1, 2, 3], [4, 5, 6] ], [ [7, 8, 9], [10, 11, 12] ] ] print(list3) print(list3[1][0][1]) # 1번 인덱스 원소의, 0번 인덱스 원소의, 1번 인덱스 원소출력 : [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]] 출력 : 8
- 리스트는 가변(mutable) 객체이므로 특정 인덱스의 데이터를 변경할 수 있다.
a = ["a","b","c","d","e"] print(a)출력 : ['a', 'b', 'c', 'd', 'e']a[0] = 1 print(a)출력 : [1, 'b', 'c', 'd', 'e']a[4] = 5 print(a)출력 : [1, 'b', 'c', 'd', 5]
- 한번에 특정 구간의 데이터를 바꾸기
a[1:4] = [2, 3, 4] print(a)출력 : [1, 2, 3, 4, 5]
list1 = [1, 2, "삼", 4, 5] list2 = list1 # list2에 list1을 넣었을 때 똑같아 보이지만, 객체 자체가 copy가 되는 것( list2와 list1 같은 객체) list3 = list1.copy() # list상으로 같은 객체가 아니기 때문에 앞의 영향이 안 끼침 (copy한 값이기 때문) print(list1, list2, list3) list[2] = 3 # 리스트 값 변경 print(list1, list2, list3)[1, 2, '삼', 4, 5] [1, 2, '삼', 4, 5] [1, 2, '삼', 4, 5] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [1, 2, '삼', 4, 5]
insert(삽입할 인덱스, 삽입할 원소) : 리스트에 원소를 삽입
append(추가할 원소) : 리스트의 마지막 위치에 원소를 추가
remove(삭제할 원소) : 리스트에서 특정한 값을 가지는 원소를 삭제
sort() : 리스트의 원소를 정렬
clear() : 리스트 데이터 모두 지우기
copy() : 리스트 복사
extend(추가할 리스트) : 원래의 리스트에 추가할 리스트의 원소들을 복사
list1 = [1, 2, "3", 4] print(list1)출력 : [1, 2, '3', 4]list1.append(0) # 마지막 위치에 0를 추가 print(list1)출력 : [1, 2, '3', 4, 0]list1.insert(2, 3) # 인덱스 2의 위치에 3를 삽입 print(list1)출력 : [1, 2, 3, '3', 4, 0]list1.remove("3") # 원소 "3"을 제거 print(list1)출력 : [1, 2, 3, 4, 0]list1.extend([6, 5]) # 원소 6 과 5를 추가 print(list1)출력 : [1, 2, 3, 4, 0, 6, 5]list1.sort() # 오름차순 정렬 print(list1)출력 : [0, 1, 2, 3, 4, 5, 6]list1.sort(reverse=True) # 내림차순 정렬 print(list1)출력 : [6, 5, 4, 3, 2, 1, 0]list1.clear() # 모든 값 지우기 print(list1)출력 : []
list1 = [1, 2, "삼", 4, 5] list2 = list1 list3 = list1.copy() print(list1, list2, list3)출력 : [1, 2, '삼', 4, 5] [1, 2, '삼', 4, 5] [1, 2, '삼', 4, 5]list1[2] = 3 # 리스트 값 변경 print(list1, list2, list3)출력 : [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [1, 2, '삼', 4, 5]
list1 = [0, 1, 2, 3, 4] list2 = [5, 6, 7, 8, 9]list3 = list1 + list2 print(list3)출력 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]list4 = list1 * 2 print(list4)출력 : [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]list1[0]=5 print(list3) print(list4)출력 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 출력 : [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]원래 리스트 값을 바꾸어도 새로 생성된 리스트 값이 바뀌지 않는다
list1 = [0, 2, 4, 6, 8] print(list1)출력 : [0, 2, 4, 6, 8]
- *연산자를 사용하여 초기화
list1 = [0] * 5 print(list1)출력 : [0, 0, 0, 0, 0]append() 사용하여 초기화
list1 = [] for i in range(5): list1.append(i*2) print(list1)출력 : [0] 출력 : [0, 2] 출력 : [0, 2, 4] 출력 : [0, 2, 4, 6] 출력 : [0, 2, 4, 6, 8]
- 리스트 컴프리헨션(list comprehension) 으로 초기화
list1 = [ i * 2 for i in range(5) ] print(list1)출력 : [0, 2, 4, 6, 8]
a = [0, 1, 2, 3, 4] b = [5, 6, 7, 8, 9]
- 임의의 값으로 2차원 리스트(2x5) 선언하여 초기화
list1 = [a, b] print(list1)출력 : [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
- append()로 2차원 리스트 초기화
list2 = [] list2.append(a) list2.append(b) print(list2)출력 : [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
- 원래의 리스트 값이 바뀔 경우
a[0] = 5 print(list1) print(list2)출력 : [[5, 1, 2, 3, 4], [5, 6, 7, 8, 9]] 출력 : [[5, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
- 리스트 컴프리핸션을 사용하여 2차원 리스트 초기화 방법 1
list3 = [[0] * 5 for _ in range(2)] print(list3)출력 : [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
- 리스트 컴프리핸션을 사용하여 2차원 리스트 초기화 방법 2
list4 = [[i] * 5 for i in range(2)] print(list4)출력 : [[0, 0, 0, 0, 0], [1, 1, 1, 1, 1]]
- 리스트 컴프리핸션을 사용하여 2차원 리스트 초기화 방법 3
list5 = [[(i * 5) + j for j in range(5)] for i in range(2)] print(list5)출력 : [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
- 리스트 컴프리헨션 with 조건문
[표현식 for 항목 in 반복_가능_객체 if 조건문]
- for 문을 2개 이상 사용하는 것도 가능하다
[표현식 for 항목1 in 반복_가능_객체1 if 조건문1 for 항목2 in 반복_가능_객체2 if 조건문2 ... for 항목n in 반복_가능_객체n if 조건문n]
리스트 컴프리헨션 예시
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = [num for num in a if num % 2 == 0] print(result)출력 : [2, 4, 6, 8, 10]
다중 리스트 컴프리헨션 예시
a 의 원소중 3의 배수 인것 과 4의 배수인 수를 곱해서 나올 수 있는 모든 경우를 출력
3의 배수: 3, 6, 9
4의 배수: 4, 8a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = [i * j for i in a if i % 3 == 0 for j in a if j % 4 == 0] print(result)출력 : [12, 24, 24, 48, 36, 72]