다음의 자료형들을 시퀀스 자료형이라 한다.
이외에 사전(딕셔너리, dictionary), 링크드 리스트(linked list), 스택(stack), 큐(queue) 등도 시퀀스 자료형이며 연습문제 등을 통해 다룰 예정이다.
In [1]:
a = 'hello world'
자료형을 알고 싶을 경우 type 함수 활용
In [2]:
type(a)
Out[2]:
len 함수는 문자열 자료형에만 사용되는 함수(메소드)가 아니며 모든 시퀀스 자료형에 사용할 수 있는 함수이다.
In [3]:
len(a)
Out[3]:
문자열을 표현하는 데에는 세 가지 방식이 있다.
over several
lines"""
인용하는 문장속에 작은따옴표(') 또는 큰따옴표(")가 사용되는 경우 아래와 같이 사용해야 한다.
In [4]:
a = 'One' ; b = 'Two' ; c = 'Three'
In [5]:
d = a + b + c
print(d)
In [6]:
3 * d
Out[6]:
In [7]:
d * -1
Out[7]:
In [8]:
d[0]
Out[8]:
In [9]:
d[2]
Out[9]:
In [10]:
len(d)
Out[10]:
인덱스 i
의 값은 음수도 될 수도 있다.
- len(s) <= i <= -1
-1, -2, ..., -len(s)
등 거꾸로 인덱싱한다.
In [11]:
d[-1]
Out[11]:
In [12]:
d[-11]
Out[12]:
In [13]:
d[1:] # 두 번째 원소부터 끝까지. 스텝 k가 생략되었을 경우 k=1로 간주함.
Out[13]:
In [14]:
d[:5] # 처음부터 4번 인덱스까지.
Out[14]:
In [15]:
d[::3] # 전체 구간에서 3개중에 하나꼴로 추출
Out[15]:
In [16]:
d[::-1] # 스텝이 음수일 경우 역순으로 추출. 즉, 시작과 끝이 뒤바뀐다.
Out[16]:
In [17]:
d[3:10:-2]
Out[17]:
In [18]:
d[10:3:-2]
Out[18]:
In [19]:
s = """My first look at Python was an
accident, and I didn't much like what
I saw at the time."""
In [20]:
s.count('e ') # count(s, e) 형태가 아님에 주의할 것
Out[20]:
In [21]:
s.count('at')
Out[21]:
In [22]:
s.replace('at', 'kkk')
Out[22]:
In [23]:
s.upper()
Out[23]:
In [24]:
a = s.swapcase()
print(a)
주의: 문자열 s
자체가 변하지는 않는다. 전문용어로 문자열은 immutable
자료형이라고 부른다.
In [25]:
s
Out[25]:
문자열 관련 메소드의 목록을 확인하고자 할 땐 dir 함수 활용 가능
In [26]:
dir(s)
Out[26]:
특정 메소드의 기능을 확인하고자 할 땐 help 함수 활용 가능. 단, 메소드이기 때문에 특정 객체와 함께 사용해야 한다. 예를 들어 count
메소드의 경우 help(count)
명령어는 오류를 유발한다.
In [27]:
help(s.count)
In [28]:
s.swapcase()
Out[28]:
C, C#, Java
등에서와는 달리 임의의 자료형들의 값들을 하나로 묶을 수 있다.C, C#, Java
등에서도 자료형이 다른 값들로 이루어진 list
를 다룰 수 있다. 하지만 포인터를 이용해야 한다. 관심 있는 학생은 한 번 시도해보기를 바란다.
In [29]:
[]
Out[29]:
자료형은 list
In [30]:
type([])
Out[30]:
여러 개의 자료형을 담을 수 있다!
In [31]:
[43, 'hello', [1, 2]]
Out[31]:
리스트를 원하는 만큼 중첩해서 사용할 수 있다.
In [32]:
[[1, 2], [3, 4], [[5, 6, 7]]]
Out[32]:
count
, index
등등.
In [33]:
dir([])
Out[33]:
In [34]:
help([].append)
In [35]:
l = []
In [36]:
l.append(10)
l
Out[36]:
In [37]:
l.append(20)
l
Out[37]:
In [38]:
l.append(30)
l
Out[38]:
In [39]:
l[::-2]
Out[39]:
In [40]:
ll = [[1, 2], [3,4]]
In [41]:
ll[0][::-1]
Out[41]:
In [42]:
len(ll[0])
Out[42]:
In [43]:
help(max)
파이썬의 모든 자료형 들 사이에는 순서가 있다.
숫자 < 리스트 < 문자열
In [44]:
2 < []
Out[44]:
In [45]:
[2, 1] < ''
Out[45]:
In [46]:
'' < 1
Out[46]:
In [47]:
5 < [1,2]
Out[47]:
In [48]:
[4, 5] < [[3]]
Out[48]:
In [49]:
[1, 2] < (1, 2)
Out[49]:
In [50]:
max([500, 700, [1,1], [[1]], ''])
Out[50]:
In [51]:
min([500, 700, [1,1], [[1]], ''])
Out[51]:
in
함수 예제
In [52]:
'e' in 'hello world'
Out[52]:
In [53]:
4 in [3, 4]
Out[53]:
튜플은 순서쌍이라고도 불린다.
In [54]:
t = (3, 4, 50)
t
Out[54]:
In [55]:
type(t)
Out[55]:
In [56]:
l = [3, 4, 50]
l
Out[56]:
In [57]:
type(l)
Out[57]:
튜플의 경우 인덱싱과 슬라이싱은 문자열 또는 리스트에서의 활용과 100% 동일
In [58]:
t[1]
Out[58]:
In [59]:
t[-1]
Out[59]:
튜플을 사용할 때 소괄호를 생략해도 된다. 하지만 기본적으로 소괄을 사용한다.
In [60]:
a = 10, 20, 30
type(a)
Out[60]:
In [61]:
print(a)
In [62]:
t[1] = 5
In [63]:
a, b = 1, 2
In [64]:
a
Out[64]:
두 변수에 할당된 값을 스왑(swap)하는 것이 매우 간단하다.
In [65]:
a, b = b, a
In [66]:
a
Out[66]:
주의: C, C#, Java
등에서 앞서의 예제와 같은 스왑기능을 구현하려면 포인터를 사용해야 한다. 관심있는 학생은 시도해보기를 추천한다.
In [67]:
def f(x):
return x**2, x**3
In [68]:
a, b = f(2)
In [69]:
a
Out[69]:
참조: 튜플의 불변성(immutability) 성질은 이후에 배우게 될 사전(dictionary) 자료형을 다룰 때 유용하게 활용된다.
In [70]:
a = 'hello world'
a[4] = 'x'
이미 특정 변수에 할당된 문자열을 수정하고자 할 때는 재할당을 사용해야 한다.
예를 들어, 아파트가 문자열 또는 튜플 자료형이라면 아파트를 수선할 수는 없고, 대신에 기존 아파트를 부신 다음에 새로 원하는 대로 지어야 함을 의미한다.
In [71]:
a = a[0:3] + 'x' + a[4:]
a
Out[71]:
아래의 연산다들이 지금까지 다룬 모든 시퀀스 자료형과 관련하여 사용할 수 있다.
(i, j, n
은 정수를 의미하고, a, b
는 시퀀스 자료형을 의미한다.)
a[i]
: a
의 i
번째 인덱스 값 리턴a[i:j]
: a
의 i
번째 인덱스 값부터 j-1
번째 인덱스 값까지 리턴len(a)
: a
에 포함된 원소들의 개수max(a)/min(a)
: a
의 원소들 중에서 최대값/최소값 리턴x in a
: x
가 a
의 원소일 때 True
리턴, 아니면 False
리턴a + b
: a
와 b
를 이어붙인 값을 리턴n * a
: a
를 n
번 이어붙인 값을 리턴