[파이썬] 복습 노트 - 3 | 시퀀스 자료형, 이스케이프 문자, 형식 문자열

반응형

시퀀스 자료형

- 시퀀스 자료형이란 값이 연속적으로 이어진 자료형을 말한다.

- 리스트, 튜플, 문자열이 시퀀스 자료형에 속한다.
- 시퀀스 자료형의 요소들은 고유의 인덱스 번호를 가지고 있다.
- 인덱스 번호의 시작 번호는 앞에서부터 0
   마이너스 인덱스 번호의 시작 번호는 -1

ex) 

li = ['a', True, 1, 2, 3, "안녕"]

idx [0] [1] [2] [3] [4] [5]
li = 'a' True 1 2 3 "안녕"
idx [-6] [-5] [-4] [-3] [-2] [-1]

 

tu = (False, 4, 5, 6, 'b')

idx [0] [1] [2] [3] [4]
tu = False 4 5 6 'b'
idx [-5] [-4] [-3] [-2] [-1]

 

st = "Hello World"

idx [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
st =  'H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd'
idx [-11] [-10] [-9] [-8] [-7] [-6] [-5] [-4] [-3] [-2] [-1]

 

1) 인덱싱

- 특정문자를 추출할 때 사용, 인덱스 번호를 사용
- 변수명[인덱스번호]

ex)

위 예시에서

st[4] = 'o' , tu[3] = 6

 

2) 슬라이싱

- 인덱스 번호를 사용하여 한 문자 이상 구성된 단어나 문자를 추출할 때 사용
- 변수명[start : stop : step]
              이상    미만   간격

ex)

li = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

idx   0  1  2  3  4  5  6  7  8

 

li[ 3 : 7 ] -> 인덱스번호 3이상 7미만 (간격 1) -> [ 4, 5, 6, 7 ]

li[ 5 : ] -> 인덱스번호 5이상 (끝까지) -> [ 6, 7, 8, 9 ]

li[ 1 : 7 : 2] -> 인덱스번호 1이상 7미만 2간격 -> [ 2, 4, 6 ]

li[ : 4 ] -> (처음부터) 인덱스 번호 4미만 -> [ 1, 2, 3, 4 ]

 


1. 입력함수 : input()

- 사용자로부터(키보드로부터) 입력받기 위한 함수
- input("입력 메시지")
- 입력받은 값은 무조건 str 자료형으로 저장된다.
- 다른 자료형을 입력하고 싶을 때에는 반드시 형변환을 사용해야 한다.

ex)

a = int(input("정수 입력 : "))
print(a + 1)

이렇게 입력받은 값을 변수에 저장하고 그 변수를 다른 자료형으로 변환한 뒤

자료형을 연산하거나 출력하고, 사용할 수 있다.


2. 이스케이프 문자

- 문자열 안에서 특수한 기능을 하는 문자


\" : 문자열에서 "를 표현한다.
\' : 문자열에서 '를 표현한다.
\\ : 문자열에서 \를 표현한다.
\n : 줄바꿈을 표현한다.
\t : tab키(들여쓰기, 일정간격 띄우기)를 표현한다.


3. 형식을 갖춘 문자열

: 하나의 문자열 안에서 여러 개의 자료형의 형식을 지정하여 작성하는 것


1) %연산자

- 자료형마다 문자열에서 표현하는 서식문자(형식 지정자)를 사용

기본 자료형 형식 지정자 출력 예시
정수형 (int) %d print("%d" %10)
실수형(float) %f print("%f" %3.14)
문자형(str) %s print("%s" %True)
논리형(bool) %s print("%s" %'안녕')

c언어의 표현방식과 유사하다.


2) str.format()

- "{} {}".format(값1, 값2) 
- 순서를 지정할 수도 있고, 형식을 지정할 수도 있음


(1) 다양한 대입 방법

# 직접 대입하기
s1 = 'name : {0}'.format('BlockDMask')
print(s1)
=> name : BlockDMask

# 변수로 대입 하기
age = 55
s2 = 'age : {0}'.format(age)
print(s2)
=> age : 55

# 이름으로 대입하기
s3 = 'number : {num}, gender : {gen}'.format(num=1234, gen='남')
print(s3)
=> number : 1234, gender : 남

출처: https://blockdmask.tistory.com/424 [가면 뒤의 기록:티스토리]

 

(2) 인덱스 번호 사용

# 인덱스를 입력하지 않으면?
s4 = 'name : {}, city : {}'.format('BlockDMask', 'seoul')
print(s4)  
=> name : BlockDMask, city : seoul
# 인덱스를 입력하지 않으면 뒤에 입력한 순서대로 대입됨

# 인덱스 순서가 바뀌면?
s5 = 'song1 : {1}, song2 : {0}'.format('nunu nana', 'ice cream')
print(s5)  
=> song1 : ice cream, song2 : nunu nana
# 인덱스 순서가 바뀌면 번호에 맞춰 바뀌어서 대입됨

# 인덱스를 중복해서 입력하면?
s6 = 'test1 : {0}, test2 : {1}, test3 : {0}'.format('인덱스0','인덱스1')
print(s6)
=> test1 : 인덱스0, test2 : 인덱스1, test3 : 인덱스0
# 인덱스를 중복해서 입력하면 변수를 사용한 것처럼 중복해서 대입됨

출처: https://blockdmask.tistory.com/424 [가면 뒤의 기록:티스토리]

 

(3) 문자열 정렬 형식

# 왼쪽 정렬
s9 = 'this is {0:<10} | done {1:<5} |'.format('left', 'a')
print(s9)  

# 오른쪽 정렬
s10 = 'this is {0:>10} | done {1:>5} |'.format('right', 'b')
print(s10)  

# 가운데 정렬
s11 = 'this is {0:^10} | done {1:^5} |'.format('center', 'c')
print(s11)


<출력 결과>
this is left       | done a     |
this is      right | done     b |
this is   center   | done   c   |

출처: https://blockdmask.tistory.com/424 [가면 뒤의 기록:티스토리]

:(콜론) < or > or ^ (정렬방향) 정수(확보할 전체 칸 수)

# 왼쪽 정렬
s12 = 'this is {0:-<10} | done {1:o<5} |'.format('left', 'a')
print(s12)  

# 오른쪽 정렬
s13 = 'this is {0:+>10} | done {1:0>5} |'.format('right', 'b')
print(s13)  

# 가운데 정렬
s14 = 'this is {0:.^10} | done {1:@^5} |'.format('center', 'c')
print(s14)


<출력 결과>
this is left------ | done aoooo |
this is +++++right | done 0000b |
this is ..center.. | done @@c@@ |

출처: https://blockdmask.tistory.com/424 [가면 뒤의 기록:티스토리]

{ :(콜론) (공백을 대신할 문자) < or > or ^ (정렬방향) 정수(확보할 전체 칸 수)}

 

(4) 자리수와 소수점 표현

# 정수 N자리
s15 = '정수 3자리 : {0:03d}, {1:03d}'.format(12345, 12)
print(s15)  
=> 정수 3자리 : 12345, 012

# 소수점 N자리
s16 = '아래 2자리 : {0:0.2f}, 아래 5자리 : {1:0.5f}'.format(123.1234567, 3.14)
print(s16)
=> 아래 2자리 : 123.12, 아래 5자리 : 3.14000


출처: https://blockdmask.tistory.com/424 [가면 뒤의 기록:티스토리]

정수를 N자리로 맞추기 -> 01, 02 이런 표현

{ : 0Nd} -> N자리가 안되면 부족한 자리수는 0으로 채움

 

소수점 아래 N자리까지 표현 -> 3.1400 이런 표현

{ : .Nf} -> 위에 예제에서는 0.Nf로 표현되어있지만 여기에서 0은 생략되어도 된다.


 

3) f-string

- f"{값, 변수명}" -> 따옴표 앞에 f를 쓰고 따옴표 내부에서 불러오고 싶은 변수의 이름을 중괄호{}로 감싸서 작성

- .format에서 뒤에 작성한 내용을 중괄호 안에 작성한다고 보면 된다.
- 따로 값을 넘겨줄 필요 없이 알아서 변수에 저장된 값을 중괄호 안으로 가져옴

ex)

num = 3
st = "Hello!"
pi = 3.14

print(f"{st} int({pi:.2f} = {num})")
 출력 결과 => Hello! int(3.14) = 3

[참고 사이트]

- https://blockdmask.tistory.com/424

- https://wikidocs.net/84391

 

반응형