본문 바로가기

PYTHON

[Python] 파이썬 형변환 하기

데이터 타입 및 연산자

 

타입을 확인하려면 type()을 사용하여 확인합니다.

출처 : https://eehoeskrap.tistory.com/295

 

파이썬은 많은 내장 데이터 타입(built-in data type)들을 가지고 있습니다.

 

- boolean : 참, 거짓 두가지 값을 표현합니다.

- int(integer) : 정수입니다.

- float(floating-point number) : 실수 입니다.

- complex number : 복소수 입니다.

- str(string) : 문자열 입니다.

- list : 순서가 있는 값들의 집합 입니다.

- tuple : 리스트와 같이 순서가 있는 값들의 집합이지만 읽기전용 입니다.

- set : 순서가 없고 중복되지 않는 값들의 집합 입니다.

- dict(dictionary) : 키와 값의 쌍으로 데이터를 저장합니다.

 

1) boolean 타입

True, Flase 둘 중의 하나의 값을 가집니다. True, False 값은 대소문자를 구분합니다. boolean 타입에 사용할 수 있는 연산자는 and, or, not 이 있습니다.


2) 비교연산자

파이썬에서 비교연산자는 8가지가 있습니다. 이것들은 모두 같은 우선순위를 가집니다.

 <  : 작다

 <= : 작거나 같다

 >  : 크다

 >= : 크거나 같다.

 == : 같다.

 != : 다르다.

 is : 동일한 객체이다.

 is not : 동일한 객체가 아니다.


3)수치형 및 연산자

정수(int), 실수(float), 복소수(complex)가 있습니다. 사용할 수 있는 연산자는 다음과 같습니다.

 

 x + y  : 두 값을 더합니다.

 x - y  : x에서 y를 뺍니다.

 x * y  : 두 값을 곱합니다.

 x / y  : x에서 y를 나눕니다.

 x // y : x에서 y를 나눈 몫을 반환합니다.

 x % y  : x에서 y를 나눈 나머지를 반환합니다.

 -x     : 부호를 바꿉니다.

 +x     : 변화가 없습니다.

 abs(x) : 절대값을 반환합니다.

 int(x) : 숫자 문자열이나 실수를 정수로 변환합니다.

 float(x) : 숫자 문자열이나 정수를 실수로 변환합니다.

 complex(re, im) : 실수부분이 re이고 허수부부이 im 인 복소수를 반환합니다.

 c.conjugate()   : 켤레복소수(허수부 부호가 바뀐 값)를 반환합니다.

 divmod(x, y)    : (x // y, x % y) 를 반환합니다.(tuple)

 pow(x, y) : x의 y승 값을 반환합니다.

 x ** y    : x의 y승 값을 반환합니다.



4) 정수형에 대한 비트 연산자

비트 연산자는 정수값에 대해서만 사용됩니다. 음수일 경우 2의 보수가 사용됩니다.

 

 x | y  : or 연산입니다.

 x ^ y  : xor 연산입니다.

 x & y  : and 연산입니다.

 x << n : 왼쪽으로 n번 쉬프트 합니다.

 x >> n : 오른쪽으로 n번 쉬프트 합니다.

 ~x     : 비트를 반전시킵니다.

 

5) 문자열

문자열 literal 은 작은따옴표(') 또는 큰따옴표(")로 문자를 둘러싸서 만들 수 있습니다. 여러줄의 데이터를 작은따옴표 또는 큰따옴표 세 개를 사용해서 둘러쌉니다.

 

>>> a = 'test'

>>> b = "test"

>>> c = """This

is

test.

"""

>>> c

'This\nis\ntet.\n'

 

6)시퀀스 타입

list 는 순서가 있는 데이터의 집합으로 대괄호([])와 콤마(,)를 사용하여 값을 정의합니다.

 

>>> a = [1, 'a', 3]  # 서로 다른 타입을 값으로 가질 수 있습니다.

 

tuple 은 list 와 같지만, 읽기전용입니다. 소괄호를 사용하거나 아무것도 없이 정의합니다.

 

>>> a = (1, 2, 3)

>>> b = 4, 5, 6

 

공통적으로 사용되는 연산자를 다음과 같습니다.

 

 x in s     : s에 x 값을 포함하고 있으면 True, 아니면 False

 x not in s : s에 x 값을 포함하지 않으면 True, 아니면 False

 s + t      : s와 t 를 연결합니다.

 s * n or n * s : s 를 n 번 추가 합니다.

 s[i]       : s내의 i 번째 아이템을 반환합니다.(i 는 0부터 시작)

 s[i:j]     : s에서 i부터 j 까지 잘라서 반환합니다.

 s[i:j:k]   : s에서 i부터 j 까지 k씩 건넌 값을 잘라서 반환 합니다.

 len(s)     : s의 길이를 반환합니다.

 min(s)     : s에서 가장 작은 값을 반환합니다.

 max(s)     : s에서 가장 큰 값을 반환합니다.

 s.index(x[, i[, j]]) : s에서 x 를 처음 찾은 위치를 반환합니다. 추가 인자가 주어지면 그 범위에서 찾습니다.

 s.count(x) : s에 x 를 몇번 나오는지 반환합니다.

 

다음은 변경가능한 시퀀스 타입에 사용할 수 있는 연산 입니다.

 

 s[i] = x     : s의 i 번째 값을 x 로 바꿉니다.

 s[i:j] = t   : s의 i부터 j 까지의 내용을 반복자 t의 내용으로 바꿉니다.

 del s[i:j]   : s의 i부터 j 까지를 지웁니다. s[i:j] = []와 같습니다.

 s[i:j:k] = t : s[i:j:k]의 아이템을 반복자 t의 내용으로 바꿉니다. t의 길이는 s[i:j:k] 의 길이와 같아야 합니다.

 del s[i:j:k] : list 로부터 s[i:j:k] 를 지웁니다.

 s.append(x)  : list의 끝에 x 를 추가합니다.(s[len(s):len(s)] = [x] 와 같음)

 s.clear()    : s로 부터 모든 아이템을 지웁니다. (del s[:] 와 같음)

 s.copy()     : s로부터 얕은 복사를 합니다. (s[:] 와 같음)

 s.extend(t) or s += t : s뒤에 t 를 붙입니다.(대부분의 경우 s[len(s):len(s)] = t와 같음)

 s *= n         : s의 내용을 n 번 반복합니다.

 s.insert(i, x) : s의 i번째에 x 를 삽입합니다. (s[i:i] = [x] 와 같음)

 s.pop([i])     : s에서 i번째 아이템을 반한하고, s에서는 삭제합니다.

 s.remove(x)    : s에서 값이 x 인 첫번째 아이템을 삭제합니다.

 s.reverse()    : s의 내용을 역순으로 만듭니다.

 

※ 얕은 복사(shallow copy) 는 실제 값을 복사하는 것이 아니라 위치(주소)만 복사하는 것입니다.


7)Set 타입

set 객체는 순서가 없고 중복되지 않는 값들의 집합입니다. set은 중괄호를 사용하여 만들 수 있습니다.

 

>>> a = {1, 2, 3}

 

순서가 없으므로 a[1] 형태로 사용할 수 없습니다.

 

set은 일반적으로 소속 검사(membership testing), 시퀀스에서 중복 제거를 하거나  교집합, 합집합, 차집합, 대칭차집합(symmetric difference)을 구하는데 사용됩니다.


8) Mapping 타입

dict 객체는 키와 값의 쌍으로 된 값들을 가지는 객체입니다. 중괄호 내에 콜론(:)으로 키와 값의 쌍을 지정하여 만들 수 있습니다.

 

>>> a = {'a':1, 'b':2, 'c':3}

>>> a['a']

1

 

출처 : https://offbyone.tistory.com/49



 데이터 타입 변환 하기 

 

1. 문자열을 정수로 바꾸기

문자 '12345'를 숫자로 바꾸기

test = '12345'
print(test) #12345
print(type(test)) #<class 'str'>

print(int(test)) #12345
print(type(int(test))) #<class 'int'>

int 로만 감싸준다면 바로 변경 가능합니다.

 

2. 문자열을 실수로 바꾸기

test = "3.14"
print(test) # 3.14
print(type(test)) # <class 'str'>

print(type(float(test))) # <class 'float'>

float 로만 감싸준다면 바로 변경 가능합니다.

 

3. 숫자를 문자열로 바꾸기

test = 12345
print(type(str(test))) # <class 'str'>

str 로만 감싸준다면 바로 변경 가능합니다.

 

4. 리스트(list)와 튜플(tuple) 변환

x = [1,2,3,4]
print(type(x)) # <class 'list'>
print(type(tuple(x))) # <class 'tuple'>

tuple 로만 감싸준다면 바로 변경 가능합니다.

 

4-1. 튜플(tuple)을 리스트(list)로 변환

y = (6,7,8,9)
print(type(y)) # <class 'tuple'>
print(type(list(x))) # <class 'list'>

list 로만 감싸준다면 바로 변경 가능합니다.

 

5. 사전(dictionary)을 리스트(list)로 변환

이부분은 조금 까다롭지만 한번 따라해 보세요.

x = {"a":1,"b":2,"c":3}
print(x) # {'a': 1, 'b': 2, 'c': 3}
y = [(i,x[i]) for i in x]
print(y) # [('a', 1), ('b', 2), ('c', 3)]

[ ] 리스트 형태로 묶어준 뒤, 튜플로 for문을 통해 리스트를 표현해주었습니다.

 

5-1. 리스트(list)를 사전(dictionary)로 변환

이부분은 조금 까다롭지만 한번 따라해 보세요.

print(y) # 리스트형태의 y :  [('a', 1), ('b', 2), ('c', 3)]
yx = {i:j for i,j in y}
print(yx) # {'a': 1, 'b': 2, 'c': 3}

{ } 딕셔너리 형태로 묶어준 뒤, for 문을 통해 딕셔너리로 변환 해주었습니다.