웹사이트 검색

Python 3에서 데이터 유형을 변환하는 방법


소개

Python에서 데이터 유형은 하나의 특정 데이터 유형을 분류하는 데 사용되며 유형에 할당할 수 있는 값과 수행할 수 있는 작업을 결정합니다. 프로그래밍할 때 다른 방식으로 값을 조작하기 위해 유형 간에 값을 변환해야 하는 경우가 있습니다. 예를 들어 숫자 값을 문자열과 연결하거나 정수 값으로 초기화된 숫자의 소수 자릿수를 나타내야 할 수 있습니다.

이 자습서는 숫자, 문자열, 튜플 및 목록을 변환하는 과정을 안내하고 다양한 사용 사례에 익숙해지는 데 도움이 되는 예제를 제공합니다.

전제 조건

컴퓨터나 서버에 Python 3가 설치되어 있고 프로그래밍 환경이 설정되어 있어야 합니다. 프로그래밍 환경이 설정되지 않은 경우 운영 체제(Ubuntu, CentOS, Debian 등)에 적합한 서버의 프로그래밍 환경에 대한 설치 및 설정 가이드를 참조할 수 있습니다.

숫자 유형 변환

Python에는 두 개의 부동 소수점 숫자 또는 부동 소수점이 있습니다. 때로는 다른 사람의 코드에서 작업 중이고 정수를 실수로 또는 그 반대로 변환해야 하거나 실제로 필요한 것이 실수일 때 정수를 사용하고 있음을 알 수 있습니다. 파이썬에는 정수를 부동 소수점으로, 부동 소수점을 정수로 쉽게 변환할 수 있는 내장 메서드가 있습니다.

정수를 실수로 변환

Python의 메서드 float()는 정수를 실수로 변환합니다. 이 함수를 사용하려면 괄호 안에 정수를 추가하십시오.

정보: 이 자습서의 예제 코드를 따라하려면 python3 명령을 실행하여 로컬 시스템에서 Python 대화형 셸을 엽니다. 그런 다음 >>> 프롬프트 뒤에 추가하여 예제를 복사, 붙여넣기 또는 편집할 수 있습니다.

float(57)

이 경우 5757.0으로 변환됩니다.

이것을 변수와 함께 사용할 수도 있습니다. f57과 동일하게 선언한 다음 새 부동 소수점을 출력합니다.

f = 57
print(float(f))
Output
57.0

float() 함수를 사용하여 정수를 실수로 변환할 수 있습니다.

실수를 정수로 변환

파이썬에는 부동 소수점을 정수로 변환하는 내장 함수도 있습니다: int().

int() 함수는 float() 함수와 유사하게 작동합니다. 괄호 안에 부동 소수점 숫자를 추가하여 정수로 변환할 수 있습니다.

int(390.8)

이 경우 390.8390으로 변환됩니다.

이것을 변수와 함께 사용할 수도 있습니다. b125.0과 동일하게 선언하고 c390.8과 동일하게 선언한 다음 새 플로트를 출력합니다.

b = 125.0
c = 390.8

print(int(b))
print(int(c))
Output
125 390

int() 함수를 사용하여 float를 정수로 변환할 때 Python은 float의 소수점과 나머지 숫자를 잘라 정수를 만듭니다. 390.8을 391로 반올림하고 싶어도 Python은 int() 함수를 통해 이를 수행하지 않습니다.

나눗셈을 통해 변환된 숫자

Python 3에서는 Python 2를 수행할 때 관련 몫이 정수에서 부동 소수점으로 변환됩니다. 즉, 5를 2로 나누면 Python 3에서는 답(2.5)에 대한 부동 소수점을 얻습니다.

a = 5 / 2
print(a)
Output
2.5

파이썬 2에서는 두 개의 정수를 다루었기 때문에 5/2=2 대신 정수를 답으로 받게 됩니다. Python 2와 Python 3의 차이점에 대한 자세한 내용은 \Python 2와 Python 3: 실용적인 고려 사항\을 읽어보세요.

문자열로 변환

문자열은 하나 이상의 문자(문자, 숫자, 기호)의 시퀀스입니다. 문자열은 컴퓨터 프로그램의 일반적인 데이터 형식이며 특히 사용자 생성 데이터를 가져올 때 문자열을 숫자로 또는 숫자를 문자열로 변환해야 할 수도 있습니다.

숫자를 문자열로 변환

str() 메서드를 사용하여 숫자를 문자열로 변환할 수 있습니다. 메서드의 괄호 안에 숫자나 변수를 전달하면 해당 숫자 값이 문자열 값으로 변환됩니다.

먼저 정수를 변환하는 방법을 살펴보겠습니다. 정수 12를 문자열 값으로 변환하려면 12str() 메서드에 전달할 수 있습니다.

str(12)

터미널 창에서 python 명령을 사용하여 Python 대화형 셸에서 str(12)를 실행하면 다음과 같은 결과가 표시됩니다.

Output
'12'

숫자 12 주위의 따옴표는 숫자가 더 이상 정수가 아니라 이제 문자열 값임을 나타냅니다.

변수를 사용하면 정수를 문자열로 변환하는 것이 얼마나 실용적인지 알 수 있습니다. 사용자의 일일 프로그래밍 진행 상황을 추적하고 한 번에 작성하는 코드 줄 수를 입력한다고 가정해 보겠습니다. 이 피드백을 사용자에게 보여주고 문자열과 정수 값을 동시에 출력할 것입니다.

user = "Sammy"
lines = 50

print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")

이 코드를 실행하면 다음 오류가 발생합니다.

Output
TypeError: can only concatenate str (not "int") to str

Python에서는 문자열과 정수를 연결할 수 없으므로 lines 변수를 문자열 값으로 변환해야 합니다.

user = "Sammy"
lines = 50

print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")

이제 코드를 실행하면 사용자의 진행 상황을 축하하는 다음과 같은 출력이 표시됩니다.

Output
Congratulations, Sammy! You just wrote 50 lines of code.

정수를 문자열로 변환하는 대신 실수를 문자열로 변환하려는 경우 동일한 단계와 형식을 따릅니다. float를 str() 메서드에 전달하면 float의 문자열 값이 반환됩니다. float 값 자체 또는 변수를 사용할 수 있습니다.

print(str(421.034))

f = 5524.53
print(str(f))
Output
421.034 5524.53

문자열을 연결하여 올바른지 테스트할 수 있습니다.

f = 5524.53
print("Sammy has " + str(f) + " points.")
Output
Sammy has 5524.53 points.

연결이 오류 없이 수행되었기 때문에 float가 문자열로 올바르게 변환되었는지 확인할 수 있습니다.

문자열을 숫자로 변환

문자열은 int()float() 메서드를 사용하여 숫자로 변환할 수 있습니다.

문자열에 소수 자릿수가 없으면 int() 메서드를 사용하여 문자열을 정수로 변환하는 것이 좋습니다.

매일 작성되는 코드 줄을 추적하는 사용자 Sammy의 예를 사용하겠습니다. 사용자에게 더 흥미로운 피드백을 제공하기 위해 이러한 값을 수학으로 조작할 수 있지만 해당 값은 현재 문자열에 저장되어 있습니다.

lines_yesterday = "50"
lines_today = "108"

lines_more = lines_today - lines_yesterday

print(lines_more)
Output
TypeError: unsupported operand type(s) for -: 'str' and 'str'

두 개의 숫자 값이 문자열에 저장되었기 때문에 오류가 발생했습니다. 빼기의 피연산자 -는 두 문자열 값에 유효한 피연산자가 아닙니다.

문자열을 정수로 변환하는 int() 메서드를 포함하도록 코드를 수정하고 원래 문자열이었던 값으로 수학을 수행할 수 있도록 합시다.

lines_yesterday = "50"
lines_today = "108"

lines_more = int(lines_today) - int(lines_yesterday)

print(lines_more)
Output
58

변수 lines_more는 자동으로 정수이며 이 예에서 숫자 값 58과 같습니다.

int() 메서드 대신 float() 메서드를 사용하여 위 예제의 숫자를 float 값으로 변환할 수도 있습니다. 58의 출력을 수신하는 대신 float인 58.0의 출력을 수신합니다.

사용자 Sammy는 십진수 값으로 포인트를 얻습니다.

total_points = "5524.53"
new_points = "45.30"

new_total_points = total_points + new_points

print(new_total_points)
Output
5524.5345.30

이 경우 + 피연산자를 두 개의 문자열과 함께 사용하는 것은 유효한 작업이지만 두 개의 숫자 값을 함께 추가하는 것이 아니라 두 개의 문자열을 연결합니다. 따라서 우리의 출력은 두 값을 서로 옆에 배치하기 때문에 비정상적으로 보입니다.

float() 메서드로 수학을 수행하기 전에 이러한 문자열을 float로 변환해야 합니다.

total_points = "5524.53"
new_points = "45.30"

new_total_points = float(total_points) + float(new_points)

print(new_total_points)
Output
5569.83

이제 두 문자열을 float로 변환했으므로 45.305524.53에 추가하는 예상 결과를 받습니다.

소수 자릿수가 있는 문자열 값을 정수로 변환하려고 하면 오류가 발생합니다.

f = "54.23"
print(int(f))
Output
ValueError: invalid literal for int() with base 10: '54.23'

문자열의 10진수 값을 int() 메서드에 전달하면 정수로 변환되지 않기 때문에 오류가 발생합니다.

문자열을 숫자로 변환하면 작업 중인 데이터 유형을 빠르게 수정할 수 있으므로 원래 문자열로 캐스팅된 숫자 값에 대한 작업을 수행할 수 있습니다.

튜플 및 목록으로 변환

list()tuple() 메서드를 사용하여 전달된 값을 각각 목록 및 튜플 데이터 유형으로 변환할 수 있습니다. 파이썬에서:

  • 목록은 대괄호 [ ] 안에 포함된 변경 가능한 순서의 요소 시퀀스입니다.
  • 튜플은 괄호 ( ) 안에 포함된 요소의 불변 순서 시퀀스입니다.

튜플로 변환

목록을 튜플로 변환하는 것부터 시작하겠습니다. 목록을 튜플로 변환하면 변경할 수 없는 데이터 유형이기 때문에 우리가 만드는 프로그램을 상당히 최적화할 수 있습니다. tuple() 메서드를 사용하면 전달된 값의 튜플 버전을 반환합니다.

print(tuple(['pull request', 'open source', 'repository', 'branch']))
Output
('pull request', 'open source', 'repository', 'branch')

항목이 이제 대괄호가 아닌 괄호 안에 포함되므로 튜플이 출력에 출력되는 것을 볼 수 있습니다.

목록을 나타내는 변수와 함께 tuple()을 사용합시다.

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']
print(tuple(sea_creatures))
Output
('shark', 'cuttlefish', 'squid', 'mantis shrimp')

다시 목록 값이 괄호로 표시된 튜플 값으로 변경되었음을 알 수 있습니다. 문자열을 포함하여 모든 반복 가능한 유형을 튜플로 변환할 수 있습니다.

print(tuple('Sammy'))
Output
('S', 'a', 'm', 'm', 'y')

문자열을 반복할 수 있기 때문에 tuple() 메서드를 사용하여 문자열을 튜플로 변환할 수 있습니다. 그러나 정수 및 부동 소수점과 같이 반복할 수 없는 데이터 유형을 사용하면 유형 오류가 발생합니다.

print(tuple(5000))
Output
TypeError: 'int' object is not iterable

tuple(str(5000))에서와 같이 정수를 문자열로 변환한 다음 튜플로 변환할 수 있지만 복잡한 변환보다 읽기 쉬운 코드를 선택하는 것이 가장 좋습니다.

목록으로 변환

값, 특히 튜플을 목록으로 변환하면 해당 값의 변경 가능한 버전이 필요할 때 유용할 수 있습니다.

list() 메서드를 사용하여 다음 튜플을 목록으로 변환합니다. 목록을 만드는 구문은 괄호를 사용하므로 list() 메서드의 괄호를 포함해야 하며 이 경우에는 print() 메서드도 포함해야 합니다.

print(list(('blue coral', 'staghorn coral', 'pillar coral')))
Output
['blue coral', 'staghorn coral', 'pillar coral']

대괄호는 list() 메서드를 통해 전달된 원래 튜플 값에서 목록이 반환되었음을 나타냅니다.

코드를 더 읽기 쉽게 만들기 위해 변수를 사용하여 괄호 쌍 중 하나를 제거할 수 있습니다.

coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)

list(coral)를 인쇄하면 위와 동일한 출력을 받게 됩니다.

튜플과 마찬가지로 문자열을 목록으로 변환할 수 있습니다.

print(list('shark'))
Output
['s', 'h', 'a', 'r', 'k']

여기서 shark 문자열은 목록으로 변환되어 원래 값의 변경 가능한 버전을 제공합니다.

결론

Python 자습서에서는 주로 기본 제공 메서드를 통해 몇 가지 중요한 기본 데이터 형식을 다른 데이터 형식으로 변환하는 방법을 보여 주었습니다. Python에서 데이터 유형을 변환할 수 있으면 프로그램을 작성할 때 추가 유연성이 제공됩니다.