티스토리 뷰
📌 시퀀스 자료형 (sequence type)
[리스트], (튜플), {딕셔너리}, 문자열, range는 데이터가 연속적이라는 공통점이 있다. 파이썬에서는 이처럼 연속적으로 이어진 데이터를 묶는 자료형을 시퀀스 자료형(sequence types)이라고 부른다.
📍 시퀀스 자료형은 공통된 동작과 기능을 제공한다.
📍 시퀀스 자료형으로 만든 객체를 시퀀스 객체라고 부르며, 객체 안에 저장된 값을 요소라고 부른다.
📍 앞서 다루었던 리스트, 튜플, 딕셔너리와 겹치는 내용이 있을 수 있다.
👉 검색 : 특정 값이 있는 지 확인하기
1. 값 in 시퀀스객체
num = [ 10, 20, 'hi', 4, 5 ]
if(10 in num) :
print('10 in num')
else :
print('10 not in num')
✔ 위와 같이 in 연산자를 사용하면, 시퀀스 객체에 값이 존재하는 경우 True를 반환하고 없다면 False를 반환한다.
✔ 반대로 in 앞에 not을 붙여 사용하면 특정 값이 없는 지를 확인한다.
dic = { 'one':1 , 'two':2 , 'three':3 }
if( 1 not in dic.values() ) :
print('1 not in dic')
else :
print('1 in dic')
✔ 다른 시퀀스 객체와는 달리 {딕셔너리}는 kye-value 한 쌍을 요소로 가진다.
✔. values() 메서드를 사용해 value만 따로 리스트로 뽑아낸 다음에 in 연산을 해주자.
✔ key값을 확인하고 싶다면. keys() 메서드를 사용하고 in 연산을 하자.
👉 결합 : 시퀀스 객체의 연결
1. 덧셈 연산자를 사용한 결합
num1 = [ 10, 20 ]
num2 = [ 30, 40 ]
num3 = ( 50, 60 )
#서로 다른 시퀀스는 연산 불가
#num = num1+num3
n1 = num1 + num2
n2 = num1 + list(num3)
print(n1)
print(n2)
✔ 같은 시퀀스 자료형인 경우만 덧셈 연산이 가능하며, 서로 다른 시퀀스 자료형을 결합하려면 형변환이 필요하다
# 에러 발생
# test = range(5) + range(5,10)
# print(test)
# 형변환 후 덧셈 연산자 사용할 것
num = list(range(5)) + list(range(5,10))
print(num)
✔ 시퀀스 자료형 중 range는 덧셈 연산자로 객체를 연결할 수 없다.
✔ range에 덧셈 연산을 통해서 다른 객체를 연결하고 싶다면 다른 시퀀스 자료형으로 형변환해서 결합하자.
👉 반복 : 시퀀스 객체의 반복
1. *을 사용한 반복
print(list(range(1,3))*2) #range는 list나 tuple로 형변환 후 반복 가능
print('123'*2) #string
print([1,2,3]*2) #list
print((1,2,3)*2) #tuple
dic = {1:'one',2:'two',3:'three'} #dictionary도 반복을 위해서는
print(list(dic.keys())*2) #key만 뽑아서 list나 tuple로 형변환 하거나
print(list(dic.values())*2) #value만 뽑아서 형변환해서 반복할 수 있다.
print(dic[1]*2) #대괄호[key]를 사용해서 value를 반복할 수있다.
✔ 리스트, 튜플, 문자열은 * 을 사용해서 반복할 수 있다.
✔ 딕셔너리는 key나 value 중 하나를 뽑아내고, 리스트나 튜플로 형변환해야 반복할 수 있다.
✔ range도 마찬가지로 반복을 위해서는 형변환이 필요하다.
👉 길이 : 시퀀스 객체의 요소 개수 구하기
1. 리스트, 튜플, 딕셔너리의 길이 구하기
list = [1,2,3,4,5]
tuple = ('one','two','three')
dic = {1:'one',2:'two',3:'three'}
print(len(list))
print(len(tuple))
print(len(dic))
2. range가 생성한 숫자 개수 구하기
number = range(1,20,4)
print(len(number))
# 1 5 9 13 17
3. 문자열 길이 구하기
hello = '안녕하세요'
print(len(hello))
print(len(hello.encode('utf-8')))
✔ 문자열의 길이는 공백을 포함한다.
✔ len은 파이썬 3 에서는 문자의 개수를 구해주지만, 파이썬 2.7에서는 실제 바이트 수를 구한다.
✔ 인코딩 방법에 따라서 문자 하나가 가지는 크기가(byte) 다르다.
✔. encode('인코딩 방법') 메서드를 통해 확인할 수 있다.
👉 접근 : 시퀀스 자료형의 요소 사용하기
1. 시퀀스 객체 [인덱스]
l = [1,2,3,'hi']
t = (10,20,30,40,50)
d = {'one':1, 2:'two', 3:'three'}
r = range(5)
s = 'hello world'
print(l[0])
print(t[0])
print(d['one'])
print(r[0])
print(s[0])
✔ 딕셔너리는 요소로 key-value를 가지므로, 대괄호 안에 idx가 아니라 key값을 넣어주자.
l = [1,2,3,'hi',5,6,'hello']
print(l[-1])
print(l[-5:-2])
✔ 인덱스를 음수로 지정하면, 뒤에서부터 요소에 접근한다.
2. 시퀀스 객체.__getitem__(인덱스)
l = [1,2,3,'hi']
t = (10,20,30,40,50)
d = {'one':1, 2:'two', 3:'three'}
r = range(5)
s = 'hello world'
print(l.__getitem__(0))
print(t.__getitem__(0))
print(d.__getitem__('one'))
print(r.__getitem__(0))
print(s.__getitem__(0))
✔ 대괄호를 사용해서 요소를 가져오는 건 실제로는 __getitem__ 메서드를 호출하는 것과 같다.
✔ 따라서 직접 메서드를 사용해서 요소를 가져올 수 있다. 대괄호를 사용했을 때와 결과가 동일함을 확인할 수 있다.
✔ __getitem__ 메서드의 인수로는 idx를 전달하고, 딕셔너리는 key값을 전달한다.
[참고] 엘리스 트랙-혼자 공부하는 파이썬 / 길벗-파이썬 코딩 도장 / 엘리스 트랙 - 예제 중심의 파이썬 입문 / 위키백과
'BackEnd > Python' 카테고리의 다른 글
[파이썬 기초] 03-1. 내장 함수 사용하기(a-e) (0) | 2021.03.22 |
---|---|
[파이썬 기초] 03-1. 내장 함수 정리 (0) | 2021.03.21 |
[파이썬 기초] 02-3. {딕셔너리} (0) | 2021.03.18 |
[파이썬 기초] 02-2. (튜플) (0) | 2021.03.18 |
[파이썬 기초] 02-1. [리스트] (0) | 2021.03.16 |