Table of Contents
파이썬 기초편 3강. 파이썬 배열형 자료구조 #
실습코드 #
리스트 (List) #
#!python
# 정수로 구성된 리스트
>>> a = [1, 2, 3, 4, 10]
# 문자열로 구성된 리스트
>>> a = ['apple', 'banana', 'melon']
# 다양한 자료형으로 구성된 리스트
>>> a = [1, 'apple', 0.332, 'banana']
# 리스트를 요소로 가진 리스트
>>> a = [['apple', 'banana', 'melon'], [1, 3.2, 4, 6]]
>>> type(a)
<class 'list'>
리스트 인덱싱 #
#!python
>>> a = ['apple', 'banana', 'melon', 'orange']
>>> a[3]
'orange'
>>> a[0]
'apple'
>>> a[-1]
'orange'
>>> a[-4]
'apple'
# 인덱스로 리스트의 요소 바꾸기
>>> a[0] = 'pineapple'
>>> a
['pineapple', 'banana', 'melon', 'orange']
# 요소 삭제
>>> del a[1]
>>> a
['pineapple', 'melon', 'orange']
리스트 슬라이싱 #
#!python
>>> a = ['apple', 'banana', 'melon', 'orange']
>>> a[:3]
['apple', 'banana', 'melon']
>>> a[:-1]
['apple', 'banana', 'melon']
>>> a[2:4]
['melon', 'orange']
>>> a[2:]
['melon', 'orange']
>>> a[1:3]
['banana', 'melon']
# 슬라이싱으로 리스트의 요소 바꾸기
>>> a[:2] = ['APPLE', 'BANANA']
>>> a
['APPLE', 'BANANA', 'melon', 'orange']
리스트 연산 #
#!python
# 리스트 합치기
>>> a = ['A', 'B', 'C']
>>> b = ['G', 'T']
>>> a + b
['A', 'B', 'C', 'G', 'T']
# 리스트 반복하기
>>> a * 2
['A', 'B', 'C', 'A', 'B', 'C']
>>> (a * 2) + b
['A', 'B', 'C', 'A', 'B', 'C', 'G', 'T']
# 리스트 끼리 '*' 연산은 안됨
>>> a * b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'list'
리스트에 제공하는 다양한 기능 #
#!python
# .append()
>>> a = ['A', 'B', 'C']
>>> a.append('D')
>>> a
['A', 'B', 'C', 'D']
# .insert()
>>> a.insert(0, 'val')
>>> a
['val', 'A', 'B', 'C', 'D']
# .extend()
>>> a.extend(['Good', 'Bad'])
>>> a
['val', 'A', 'B', 'C', 'D', 'Good', 'Bad']
# .index()
>>> a.index('Good')
5
>>> a.index('A')
1
# .remove()
>>> a.remove('val')
>>> a
['A', 'B', 'C', 'D', 'Good', 'Bad']
# .sort()
>>> a.sort()
>>> a
['A', 'B', 'Bad', 'C', 'D', 'Good']
# .max(), .min()
>>> a = [10, 2, 100, 99, 32]
>>> max(a)
100
>>> min(a)
2
# 문자열로 이루어진 튜플은 알파벳 순서로 판단
>>> b = ['B', 'C', 'FS', 'S']
>>> max(b)
'S'
>>> min(b)
'B'
# list()
>>> a = (1, 2, 3)
>>> list(a)
[1, 2, 3]
튜플 (tuple) #
#!python
# 빈 튜플 생성
>>> a = ()
# 정수로 구성된 튜플
>>> a = (1, 2, 3, 4, 10)
# 문자열로 구성된 튜플
>>> a = ('apple', 'banana', 'melon')
# 다양한 자료형으로 구성된 튜플
>>> a = (1, 'apple', 0.332, 'banana')
# 튜플과 리스트를 요소로 가진 튜플
>>> a = (['apple', 'banana', 'melon'], (1, 3.2, 4, 6))
>>> type(a)
<class 'tuple'>
# 요소가 하나인 튜플의 자료형은 튜플이 아님
>>> a = ('A')
>>> type(a)
<class 'str'>
# 요소가 하나인 튜플을 만들기 위해서는 ','를 붙여야 함
>>> b = ('A', )
>>> type(b)
<class 'tuple'>
튜플 인덱싱 #
#!python
>>> a = ('apple', 'banana', 'melon', 'orange')
>>> a[3]
'orange'
>>> a[0]
'apple'
>>> a[-1]
'orange'
>>> a[-4]
'apple'
# 요소변경, 삭제는 불가함
>>> a[0] = 'pineapple'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> del a[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
튜플 슬라이싱 #
#!python
>>> a = ('apple', 'banana', 'melon', 'orange')
>>> a[:3]
('apple', 'banana', 'melon')
>>> a[:-1]
('apple', 'banana', 'melon')
>>> a[2:4]
('melon', 'orange')
>>> a[2:]
('melon', 'orange')
>>> a[1:3]
('banana', 'melon')
>>> a[:]
('apple', 'banana', 'melon', 'orange')
튜플 연산 #
#!python
# 리스트 합치기
>>> a = ('A', 'B', 'C', 'D')
>>> b = ('G', 'T')
>>> a + b
('A', 'B', 'C', 'D', 'G', 'T')
>>> a + b + a
('A', 'B', 'C', 'D', 'G', 'T', 'A', 'B', 'C', 'D')
# 리스트 반복하기
>>> a * 2
('A', 'B', 'C', 'D', 'A', 'B', 'C', 'D')
>>> (a * 2) + b
('A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'G', 'T')
# 리스트 끼리 '*' 연산은 안됨
>>> a * b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'tuple''
튜플에서 제공하는 다양한 기능 #
#!python
# len()
>>> a = ('A', 'B', 'C')
>>> len(a)
3
# max(), min()
>>> a = (10, 2, 100, 99, 32)
>>> max(a)
100
>>> min(a)
2
# 문자열로 이루어진 튜플은 알파벳 순서로 판단
>>> b = ('B', 'C', 'FS', 'S')
>>> max(b)
'S'
>>> min(b)
'B'
# tuple()
>>> a = [1, 2, 3]
>>> tuple(a)
(1, 2, 3)
# .count()
>>> a = (1, 1, 2, 2, 2, 3, 4, 3, 5)
>>> a.count(1)
2
# .index()
>>> a = ('A', 'A', 'B', 'C', 'B')
>>> a.index('B')
2
연습문제 #
1번 #
리스트 x = ['sheep', 'puppy', 'cat', ['dog', 'cow', 'pig'], 1, 3.22]
을 인덱싱, 슬라이싱, 다양한 기능 등을 사용하여 주어진 형태로 만드시오.
- ['dog', 'cow', 'pig']
- ['dog', 'cow']
- 3.22
- 'ee' (문자열 슬라이싱 이용)
- [['dog', 'cow', 'pig'], 1, 3.22]
- 3 (숫자형 형변환 이용)
- ['sheep', 'puppy', 'cat', ['dog', 'cow', 'piglet'], 1, 3.22]
2번 #
주어진 튜플 x = ('Simple', 'is', [12, 13, 14], 'better', 'than', 'complex.', 100)
에서 아래 코드(1)~(6)를 실행했을때 어떤 결과가 나올지 예상하시오.
- x[:-4]
- x[3:-1]
- (x[3], x[:4]) + (x[4:])
- x[2][2]
- x[4][2:4]
- x[2] + ['one', 'two']
연습문제 풀이 #
1번 #
#!python
>>> x[3]
['dog', 'cow', 'pig']
>>> x[3][:2]
['dog', 'cow']
>>> x[-1]
3.22
>>> x[0][2:4]
'ee'
>>> x[-3:]
[['dog', 'cow', 'pig'], 1, 3.22]
>>> int(x[-1])
3
>>> x[3][2] = 'piglet'
>>> x
['sheep', 'puppy', 'cat', ['dog', 'cow', 'piglet'], 1, 3.22]
2번 #
#!python
>>> x[:-4]
('Simple', 'is', [12, 13, 14])
>>> x[3:-1]
('better', 'than', 'complex.')
>>> (x[3], x[:4]) + (x[4:])
('better', ('Simple', 'is', [12, 13, 14], 'better'), 'than', 'complex.', 100)
>>> x[2][2]
14
>>> x[4][2:4]
'an'
>>> x[3]
'better'
>>> x[2] + ['one', 'two']
[12, 13, 14, 'one', 'two']