시퀀스 자료형과 그 활용

two_jay·2020년 10월 1일
0

Basic Python

목록 보기
3/6
post-thumbnail

시퀀스 자료형

시퀀스 자료형의 특징은 순서가 있는 자료형이라는 것이다. 파이썬에서는 문자열, 리스트, 튜플이 시퀀스 자료형에 해당된다. 시퀀스 자료형에 해당하는 자료형은 아래의 주요한 특징들을 공유한다.


"""
1. 원소간의 순서가 존재한다.
즉, 인덱싱/슬라이싱이 가능하다.

!! 문자열을 슬라이싱하면 문자열이, 리스트를 슬라이싱하면 리스트가 나옴을 잊지말자.
"""

a = "once"
b = "twice"
c = list(b)  # ['t', 'w', 'i', 'c', 'e']

print(a[2]) # c
print(b[1:3]) # wi
print(c[2:4]) # ['i', 'c']


"""
2. 인덱싱/슬라이싱할 때에 음수를 넣거나 자리를 비우는 것도 가능하다.
"""

a = "once"
b = "twice"
c = list(b)  # ['t', 'w', 'i', 'c', 'e']

print(a[-1]) # c | 뒤에서 1번째 인덱스의 요소를 출력
print(b[:3]) # twi | 처음 ~ 3번째 슬라이싱
print(c[2:]) # ['i', 'c', 'e'] | 2번째부터 마지막까지 슬라이싱


"""
3. in 연산자로 시퀀스 안에 요소가 있는지 확인 가능하다.
"""

a = "once"
b = "twice"
c = list(b)  # ['t', 'w', 'i', 'c', 'e']

print('o' in a) # True
print('b' in c) # False


"""
3. len 연산자로 시퀀스 안에 요소가 몇 개나 있는지 확인 가능하다.
즉 해당 자료의 길이를 반환할 수 있다.
"""

a = "once"
b = "twice"
c = list(b)  # ['t', 'w', 'i', 'c', 'e']

print(len(a)) # 4
print(len(b) == len(c)) # True


"""
4. + 연산자로 같은 시퀀스 두 개를 이어 붙일 수 있다.

!! 자바스크립트의 array.prototype.concat()과는 달리
!! 파이썬에서는 리스트의 합연산에 별도의 메소드가 필요하지 않다.
"""

c = ['t', 'w', 'i'] + ['c', 'e']
print(c) # ['t', 'w', 'i', 'c', 'e']


"""
5. * 연산자로 시퀸스를 반복할 수 있다.

!! 자바스크립트의 string.prototype.repeat(number)과는 달리
!! 파이썬에서는 문자열의 반복에서 별도의 메소드가 필요하지 않다.
"""

str = 'aeiou'
print(str * 3) # aeiouaeiouaeiou

list = [1,2,3,4,5]
print(list * 2) # [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]


 

리스트 자료형

리스트는 여러가지 자료를 담는 자료형이다. 리스트에 들어가는 요소에 대해 자료형에 상관없이 저장할 수 있다. 리스트는 문자열이나 튜플처럼 순서가 있는 시퀸스 자료형 중 하나이며 인덱스나 슬라이스같은 관련 기능을 활용할 수 있다.


emptyList = []
myList = [2, "Na", 35.3]
secondList = [3, 5]

# 인덱싱을 이용하여 개별요소의 조회와 출력이 가능하다
print(myList[0]) # 2
print(myList[2]) # 35.3

# 리스트는 + 연산자로 서로 합칠 수 있다.
print(myList+secondList) # [2, "Na", 35.3, 3, 5]
print(myList+[50]) # [2, "Na", 35.3, 50]

# 리스트도 문자열과 마찬가지로 slice를 할 수 있다.
print(myList[0:2]) # [2, "Na"]



***

"""
list.append(<something>)
자료 <something>을 리스트의 마지막 원소 뒤에 추가한다.
오직 하나의 자료만 넣을 수 있다.
"""

a = []
b = ['a','b','c']

a.append(10)
b.append('d')
print(a, b) # [10] ['a','b','c','d']


"""
list.insert(<index>, <something>)
자료 <something>을 리스트의 <index>번째 인덱스에 추가한다.
오직 하나의 자료만 넣을 수 있다.
"""

c = [1,2,3,4,5]
c.insert(2, 'a')
print(c) # [1,2,'a',3,4,5]


"""
list.remove(<something>)
자료 <something>을 리스트에서 찾아서 삭제한다.
자료 <something>이 2개 이상이라면, 처음 나오는 자료를 삭제한다.
"""

d = [3,1,2,3]
d.remove(3)

print(d) # [1,2,3]


"""
list.sort()
대상 리스트를 정렬한다.
숫자형은 오름차순으로 정렬하고, 문자열은 사전순으로 정렬한다.
"""

e = [6,2,4,1]
f = ['carrot','apple','banana']

e.sort()
f.sort()
print(e, f) # [1,2,4,6] ['apple', 'banana', 'carrot']


"""
list.pop(<index>)
<index>번째에 있는 원소를 제거하고 그 원소를 반환한다.
<index>를 기입하지 않을 시 마지막 원소를 제거하고 반환한다.
"""

e = [6,2,4,1]
print(e.pop(0)) # 1
print(e.pop()) # 5


"""
list.count(<something>)
시퀀스 자료형 내부의 <something>의 갯수를 반환한다.
"""


f = [2,2,2,4,5]
print(f.count(2)) # 3

 

문자열 자료형

문자열은 개별요소인 문자의 집합이다. 문자열도 순서가 있는 시퀸스 자료형 중 하나이며 인덱스나 슬라이스같은 관련 기능을 활용할 수 있다.


"""
str.split(<something>)
<something>을 기준으로 문자열을 쪼개서 리스트를 반환한다.
<something>을 기입하지 않을 시 공백, 즉 인덱스 별로 문자를 나누어 리스트로 만든다.
"""

my_str = '12345'
print(my_str.split()) # ['1', '2', '3', '4', '5']

element = 'Na,Mg,Al,Si'
print(element.split(',')) # ['Na', 'Mg', 'Al', 'Si']


"""
str.join(<something>)
<something>을 기준으로 리스트를 합쳐서 문자열로 전환한다.
<something>을 기입하지 않을 시 공백, 즉 각 요소를 모두 바로 합쳐서 하나의 문자열로 반환한다.
"""

my_list = ['a', 'p', 'p', 'l', 'e']
print('',join(my_list)) # apple

friend = ['Pat', 'Mat']
print('&'.join(friend)) # Pat&Mat

 

튜플

튜플은 리스트와 같이 여러가지 자료를 담는 자료형이다. 튜플에 들어가는 요소는 자료형에 상관없이 저장할 수 있다. 튜플은 순서가 있는 시퀸스 자료형 중 하나이며 인덱스나 슬라이스, +와 * 연산과 같은 관련 기능을 활용할 수 있다.

튜플은 리스트와 비슷하지만 자료의 삭제나 추가, 할당 및 변경이 안된다는 특징을 가지고 있다.


# 튜플은 아래와 같이 괄호로 묶어서 선언할 수 있다.
tuple_zero = ()
tuple_one = (1)
tuple_toFive = (1,2,3,4,5)


# 혹은 괄호로 묶지 않더라도, 다수의 자료를 할당할 시 파이썬은 이를 자동으로 튜플로 인식한다.
tuple_toFive = 1,2,3,4,5


#시퀸스 자료형이기에 인덱싱/슬라이싱이 가능하다.
my_tuple = ('t','w','i','c','e')
print(my_tuple[1]) # 'w' | 인덱싱
print(my_tuple[2:4]) # ('i','c') | 슬라이싱


#in 연산자로 원소를 확인할 수도, len()함수로 길이 확인이 가능하다.
my_tuple = ('t','w','i','c','e')
print('t' in my_tuple) # True
print(len(my_tuple)) # 5


# + 연산자로 Tuple과 Tuple을 연결할 수도, * 연산자로 Tuple을 반복할 수도 있다.
my_tuple = ('t','w','i','c','e')
print(('m', 'y') + my_tuple)) # ('m', 'y', 't', 'w', 'i', 'c', 'e')
print(my_tuple*2) # ('t', 'w', 'i', 'c', 'e', 't', 'w', 'i', 'c', 'e')


"""
튜플의 가장 중요한 특징은 자료의 추가, 삭제, 변경이 불가하다는 점이다.
즉, 한 번 튜플이 만들어지면 고정이 된다.

따라서 .append 나 .remove 같은 함수들이 먹히지 않는다.
"""

#case 1
my_tuple = ('t','w','i','c','e')
print(my_tuple.append('!')) # Error

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-7-bcad15a37bea> in <module>()
      1 my_tuple = ('t','w','i','c','e')
----> 2 print(my_tuple.append('!')) # Error

AttributeError: 'tuple' object has no attribute 'append'


#case 2
my_tuple = ('t','w','i','c','e')
print(my_tuple.remove('w')) # Error

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-404450912b83> in <module>()
      1 my_tuple = ('t','w','i','c','e')
----> 2 print(my_tuple.remove('w'))

AttributeError: 'tuple' object has no attribute 'remove'


#case 3
my_tuple = ('t','w','i','c','e')
my_tuple[2] = 's'

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-bd58b1c7e5d2> in <module>()
      1 my_tuple = ('t','w','i','c','e')
----> 2 my_tuple[2] = 's'

TypeError: 'tuple' object does not support item assignment

profile
2xx을 볼 때 가장 행복한 주니어 백엔드 개발자. 좋은 개발자가 되기위해 공부하고 있습니다. 포스팅의 오류 제보나 코멘트는 언제나 환영입니다. :)

0개의 댓글