[Python Note] 자료형(2)
1. 리스트(List)
[ ]
로 표현한다.- 각 요소에 다양한 자료형을 넣을 수 있다.
숫자, 문자, 리스트, 튜플, 딕셔너리, 참/거짓, None 모두 가능 list(a)
: a를 리스트로 변환한다.- 추가, 수정, 삭제가 가능하다.
- 리스트 안에 리스트를 계속해서 넣을 수 있는데 이를 $n$차원 리스트라고 한다.
n차원 리스트 예제
# 1차원 리스트 lst = [1, 2, 3] print(lst) # 2차원 리스트 lst = [[1, 2, 3], [4, 5, 6]] print(lst) # 3차원 리스트 lst = [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]], [[13, 14, 15], [16, 17, 18]]] print(lst)
[1, 2, 3] [[1, 2, 3], [4, 5, 6]] [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]], [[13, 14, 15], [16, 17, 18]]]
2. 튜플(Tuple)
( )
로 표현한다.- 각 요소에 다양한 자료형을 넣을 수 있다.
숫자, 문자, 리스트, 튜플, 딕셔너리, 참/거짓, None 모두 가능 tuple(a)
: a를 튜플로 변환한다.- 추가, 수정, 삭제가 불가능하다.
- 요소가 하나인 튜플 만들기, `,`가 필요하다
print((2), type((2))) print((2,),type((2,)))
2 <class 'int'> (2,) <class 'tuple'>
# 리스트(list)
a = [100, '커피', False, (1, 2, 3)]
print(a, '> type:', type(a))
# 튜플(tuple)
b = (100, '커피', False, [1, 2, 3])
print(b, '> type:', type(b))
[100, '커피', False, (1, 2, 3)] > type: <class 'list'>
(100, '커피', False, [1, 2, 3]) > type: <class 'tuple'>
3. 인덱싱(Indexing) / 슬라이싱(Slicing)
- 문자열의 인덱싱 슬라이싱과 같다.
a = [100, '커피', False, (1, 2, 3)]
b = (100, '커피', False, [1, 2, 3])
# 리스트
print(a[0]) # a의 0위치 요소 출력
print(a[-1][1]) # a의 마지막 요소에서 1위치 요소 출력
print(a[2:]) # a의 2위치부터 끝까지 출력
print(a[::-1]) # a를 거꾸로 출력
print('-'*50)
# 튜플
print(b[2]) # b의 2위치 요소 출력
print(b[1][1]) # b의 1위치 요소에서 1위치 요소 출력
print(b[:2]) # b의 처음부터 1위치까지 출력
print(a[::-1]) # b를 거꾸로 출력
100
2
[False, (1, 2, 3)]
[(1, 2, 3), False, '커피', 100]
--------------------------------------------------
False
피
(100, '커피')
[(1, 2, 3), False, '커피', 100]
4. 연산
- 문자열의 연산과 같이 리스트 / 튜플의 연산은 연결과 반복을 의미한다.
# 리스트
a = [1, 2, 3]
b = ['A', 'B', 'C']
print('a + b:', a + b)
print('a * 2:', a * 2)
print('-'*50)
# 튜플
a = (1, 2, 3)
b = ('A', 'B', 'C')
print('a + b:', a + b)
print('a * 2:', a * 2)
a + b: [1, 2, 3, 'A', 'B', 'C']
a * 2: [1, 2, 3, 1, 2, 3]
--------------------------------------------------
a + b: (1, 2, 3, 'A', 'B', 'C')
a * 2: (1, 2, 3, 1, 2, 3)
5. 찾기
- 문자열과 같지만,
find
함수는 지원하지 않는다.
함수 | 설명 |
---|---|
a.index("요소") |
“요소”가 처음 나온 위치를 출력한다, a안에 문자가 없으면 Error가 나타난다 |
a.count("요소") |
a안에 “요소”가 몇 번 나타나는지를 출력한다 |
# 리스트
a = [1, 3, 3, 2, 1]
b = ["이","삼","일","이","삼","이"]
print('a에서 요소 3 첫 위치:', a.index(3))
print('a에서 요소 3 개수:', a.count(3))
print('b에서 요소 "이" 첫 위치:', b.index('이'))
print('b에서 요소 "이" 개수:', b.count('이'))
print('b에서 요소 "오" 개수:', b.count('오'))
print('-'*50)
# 튜플
a = (1, 3, 3, 2, 1)
b = ("이","삼사","일","이","오")
print('a에서 요소 3 첫 위치:', a.index(3))
print('a에서 요소 3 개수:', a.count(3))
print('b에서 요소 "이" 첫 위치:', b.index('이'))
print('b에서 요소 "이" 개수:', b.count('이'))
print('b에서 요소 "오" 개수:', b.count('오'))
a에서 요소 3 첫 위치: 1
a에서 요소 3 개수: 2
b에서 요소 "이" 첫 위치: 0
b에서 요소 "이" 개수: 3
b에서 요소 "오" 개수: 0
--------------------------------------------------
a에서 요소 3 첫 위치: 1
a에서 요소 3 개수: 2
b에서 요소 "이" 첫 위치: 0
b에서 요소 "이" 개수: 2
b에서 요소 "오" 개수: 1
6. 변형 (list만 가능)
1) 추가
-
함수를 print하면 ‘None’이다. 즉, a 자체가 바뀌는 것이다.
코드 설명 a.append(‘요소’) a의 마지막에 ‘요소’를 추가한다 a.extend(‘리스트’) a에 ‘리스트’를 더한다 a.insert(i,’요소’) a의 i 위치에 ‘요소’를 삽입한다
a = list(range(10))
print(a)
print(a.append(10)) # a의 마지막에 요소 10 추가(출력되지 않는다)
print(a)
a.append([11, 12]) # a의 마지막에 요소 [11, 12] 추가
print(a)
a.extend([13, 14, 15]) # a의 마지막에 리스트 [13, 14, 15] 연결
print(a)
a.insert(4, 'insert') # a의 4 위치에 'insert' 요소 삽입
print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
None
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, [11, 12]]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, [11, 12], 13, 14, 15]
[0, 1, 2, 3, 'insert', 4, 5, 6, 7, 8, 9, 10, [11, 12], 13, 14, 15]
2) 수정
-
함수를 print하면 ‘None’이다. 즉, a 자체가 바뀌는 것이다.
코드 설명 a.reverse() a의 순서를 거꾸로 만든다
a = list(range(5))
print(a)
a[2] = 'one' # a의 2 위치를 'one'으로 수정
a[-1] = 'nine' # a의 마지막을 'nine'으로 수정
print(a)
print('-'*50)
a.reverse() # a를 거꾸로 출력
print(a)
print(a[::-1]) # 거꾸로 저장된 a를 다시 거꾸로 출력
print(a) # 위의 코드는 a를 바꾸지 않는다.
[0, 1, 2, 3, 4]
[0, 1, 'one', 3, 'nine']
--------------------------------------------------
['nine', 3, 'one', 1, 0]
[0, 1, 'one', 3, 'nine']
['nine', 3, 'one', 1, 0]
3) 정렬
- 함수를 print하면 ‘None’이다. 즉, a 자체가 바뀌는 것이다.
- 문자형과 숫자형이 함께 있으면 정렬되지 않는다.
- 리스트가 같은 자료형일 때 정렬할 수 있다.
-
문자형에서 정렬 순서는 ‘공백 > 숫자 > 영문 > 한글’이다.
코드 설명 a.sort() a를 오름차순으로 정렬한다 a.sort(reverse=True) a를 내림차순으로 정렬한다
b = ['가나다라마', 'abcde', ' ', '1234']
b.sort()
print(b)
b.sort(reverse=True)
print(b)
[' ', '1234', 'abcde', '가나다라마']
['가나다라마', 'abcde', '1234', ' ']
3) 삭제
- 함수를 print하면 ‘None’이다. 즉, a 자체가 바뀌는 것이다.
(.pop()
제외!,.pop()
함수는 출력이 가능하다.) -
리스트의 위치를 벗어나거나 없는 요소를 제거하면 오류가 난다.
코드 설명 del a[i] a에서 i 위치을 삭제한다 a.pop(i) a의 i 위치를 출력하고 삭제한다
(공백이면 맨 마지막 요소를 삭제한다)a.remove(‘요소’) a에서 처음 나온 ‘요소’를 삭제한다
a = list(range(10))
print(a)
del a[5] # a의 5 위치 요소 삭제(출력되지 않음)
print(a)
print(a.pop(3)) # a에서 3 위치 요소 삭제(출력됨)
print(a)
print(a.remove(7)) # a에서 요소 7 삭제
print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 6, 7, 8, 9]
3
[0, 1, 2, 4, 6, 7, 8, 9]
None
[0, 1, 2, 4, 6, 8, 9]
Reference
- 점프 투 파이썬, link: https://wikidocs.net/book/1
- IT CookBook, 데이터 과학을 위한 파이썬 프로그래밍, link: https://www.hanbit.co.kr/store/books/look.php?p_code=B3659877244
- 메타코드, 파이썬 입문 무료 강의 link: https://youtu.be/H3u2HtYGITQ
댓글남기기