다양한 Python 내장 객체 조작

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 다양한 내장 Python 객체를 조작하는 방법을 배우게 됩니다. Python 은 숫자, 문자열, 리스트, 딕셔너리 등 다양한 내장 데이터 타입을 제공합니다. 이러한 객체를 마스터하는 것은 모든 Python 프로그래머에게 매우 중요합니다.

또한, 실습을 통해 필수적인 Python 연산을 연습하고 Python 숫자, 문자열, 리스트, 딕셔너리를 효과적으로 사용하는 방법을 배우게 됩니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 85%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

Python 숫자 다루기

Python 은 수치 연산에 대한 강력한 지원을 제공합니다. 프로그래밍에서 숫자는 계산 및 수량 표현에 사용되는 기본적인 데이터 타입입니다. 이 단계에서는 프로그램에서 다양한 수학적 연산을 수행하는 데 필수적인 Python 에서의 기본적인 숫자 조작을 소개합니다.

기본 산술 연산

Python 숫자를 사용하려면 먼저 Python 대화형 셸을 열어야 합니다. 터미널에 python3를 입력하여 이 작업을 수행할 수 있습니다. Python 대화형 셸을 사용하면 Python 코드를 한 줄씩 작성하고 실행할 수 있으며, 이는 테스트 및 학습에 매우 유용합니다.

python3

Python 대화형 셸에 들어가면 몇 가지 기본 산술 연산을 시도해 볼 수 있습니다. Python 은 연산 순서 (PEMDAS: 괄호, 지수, 곱셈과 나눗셈, 덧셈과 뺄셈) 과 같은 표준 수학 규칙을 따릅니다.

>>> 3 + 4*5    ## 곱셈은 덧셈보다 우선순위가 높으므로 4*5 가 먼저 계산된 후 3 에 더해집니다.
23
>>> 23.45 / 1e-02    ## 0.01 에 대한 과학적 표기법이 사용되었습니다. 나눗셈을 수행하여 결과를 얻습니다.
2345.0

정수 나눗셈

Python 3 는 Python 2 와 다르게 나눗셈을 처리합니다. 이러한 차이점을 이해하는 것은 코드에서 예상치 못한 결과를 피하는 데 중요합니다.

>>> 7 / 4    ## Python 3 에서 일반 나눗셈은 결과가 정수일 수 있더라도 float 를 반환합니다.
1.75
>>> 7 // 4   ## Floor division (소수점 부분을 잘라냄) 은 몫을 정수로 제공합니다.
1

숫자 메서드

Python 의 숫자는 종종 간과되는 몇 가지 유용한 메서드를 가지고 있습니다. 이러한 메서드는 복잡한 수치 연산 및 변환을 단순화할 수 있습니다. 몇 가지를 살펴보겠습니다.

>>> x = 1172.5
>>> x.as_integer_ratio()    ## 이 메서드는 float 를 분수로 표현하며, 일부 수학적 계산에 유용할 수 있습니다.
(2345, 2)
>>> x.is_integer()    ## float 가 정수 값인지 확인합니다. 이 경우 1172.5 는 정수가 아니므로 False 를 반환합니다.
False

>>> y = 12345
>>> y.numerator    ## 정수의 경우 분자는 숫자 자체입니다.
12345
>>> y.denominator    ## 정수의 경우 분모는 항상 1 입니다.
1
>>> y.bit_length()    ## 이 메서드는 숫자를 이진수로 표현하는 데 필요한 비트 수를 알려주며, 비트 연산에 유용할 수 있습니다.
14

이러한 메서드는 특정 수치 연산 또는 변환을 수행해야 할 때 특히 유용합니다. 시간을 절약하고 코드를 더 효율적으로 만들 수 있습니다.

Python 대화형 셸 탐색을 마치면 다음을 입력하여 종료할 수 있습니다.

>>> exit()

Python 문자열 다루기

문자열은 Python 에서 가장 일반적으로 사용되는 데이터 타입 중 하나입니다. 문자열은 텍스트를 나타내는 데 사용되며 문자, 숫자 및 기호를 포함할 수 있습니다. 이 단계에서는 Python 에서 텍스트 데이터를 다루는 데 필수적인 기술인 다양한 문자열 연산을 살펴보겠습니다.

문자열 생성 및 정의

Python 에서 문자열을 사용하려면 먼저 Python 대화형 셸을 열어야 합니다. 이 셸을 사용하면 Python 코드를 한 줄씩 작성하고 실행할 수 있으며, 이는 학습 및 테스트에 매우 유용합니다. 다음 명령을 사용하여 Python 대화형 셸을 다시 엽니다.

python3

셸이 열리면 문자열을 정의할 수 있습니다. 이 예제에서는 주식 종목 기호가 포함된 문자열을 만들겠습니다. Python 에서 문자열은 작은따옴표 (') 또는 큰따옴표 (") 로 텍스트를 묶어 정의할 수 있습니다. 문자열을 정의하는 방법은 다음과 같습니다.

>>> symbols = 'AAPL IBM MSFT YHOO SCO'
>>> symbols
'AAPL IBM MSFT YHOO SCO'

이제 symbols라는 문자열 변수를 만들고 값을 할당했습니다. 변수 이름을 입력하고 Enter 키를 누르면 Python 은 문자열의 값을 표시합니다.

문자 및 부분 문자열 접근

Python 에서 문자열은 개별 문자에 접근하기 위해 인덱싱될 수 있습니다. 인덱싱은 0 부터 시작하며, 이는 문자열의 첫 번째 문자가 인덱스 0 을 갖고, 두 번째 문자가 인덱스 1 을 갖는다는 의미입니다. 음수 인덱싱도 지원되며, -1 은 마지막 문자를, -2 는 뒤에서 두 번째 문자를 나타냅니다.

symbols 문자열에서 개별 문자에 어떻게 접근할 수 있는지 살펴보겠습니다.

>>> symbols[0]    ## 첫 번째 문자
'A'
>>> symbols[1]    ## 두 번째 문자
'A'
>>> symbols[2]    ## 세 번째 문자
'P'
>>> symbols[-1]   ## 마지막 문자
'O'
>>> symbols[-2]   ## 뒤에서 두 번째 문자
'C'

슬라이싱을 사용하여 부분 문자열을 추출할 수도 있습니다. 슬라이싱을 사용하면 시작 및 종료 인덱스를 지정하여 문자열의 일부를 가져올 수 있습니다. 슬라이싱 구문은 string[start:end]이며, 부분 문자열은 시작 인덱스부터 (포함하지 않고) 종료 인덱스까지의 문자를 포함합니다.

>>> symbols[:4]    ## 처음 4 개의 문자
'AAPL'
>>> symbols[-3:]   ## 마지막 3 개의 문자
'SCO'
>>> symbols[5:8]   ## 인덱스 5 부터 7 까지의 문자
'IBM'

문자열 불변성

Python 의 문자열은 불변 (immutable) 입니다. 즉, 문자열이 생성되면 개별 문자를 변경할 수 없습니다. 문자열의 문자를 수정하려고 하면 Python 에서 오류가 발생합니다.

symbols 문자열의 첫 번째 문자를 변경해 보겠습니다.

>>> symbols[0] = 'a'    ## 이로 인해 오류가 발생합니다.

다음과 같은 오류가 표시됩니다.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

이 오류는 문자열이 불변이기 때문에 문자열의 개별 문자에 새 값을 할당할 수 없음을 나타냅니다.

문자열 연결

문자열을 직접 수정할 수는 없지만 연결을 통해 새 문자열을 만들 수 있습니다. 연결은 두 개 이상의 문자열을 함께 결합하는 것을 의미합니다. Python 에서는 + 연산자를 사용하여 문자열을 연결할 수 있습니다.

>>> symbols += ' GOOG'    ## 새 기호 추가
>>> symbols
'AAPL IBM MSFT YHOO SCO GOOG'

>>> symbols = 'HPQ ' + symbols    ## 새 기호 앞에 추가
>>> symbols
'HPQ AAPL IBM MSFT YHOO SCO GOOG'

이러한 연산은 원래 문자열을 수정하는 대신 새 문자열을 생성한다는 점을 기억하는 것이 중요합니다. 원래 문자열은 변경되지 않고 결합된 값으로 새 문자열이 생성됩니다.

부분 문자열 테스트

부분 문자열이 문자열 내에 존재하는지 확인하려면 in 연산자를 사용할 수 있습니다. in 연산자는 부분 문자열이 문자열에서 발견되면 True를 반환하고 그렇지 않으면 False를 반환합니다.

>>> 'IBM' in symbols
True
>>> 'AA' in symbols
True
>>> 'CAT' in symbols
False

'AA'가 "AAPL" 내에서 발견되었기 때문에 True를 반환한다는 점에 유의하십시오. 이는 더 큰 문자열 내에서 특정 텍스트를 검색하는 데 유용한 방법입니다.

문자열 메서드

Python 문자열에는 문자열에 대한 다양한 연산을 수행할 수 있는 수많은 내장 메서드가 있습니다. 이러한 메서드는 문자열 객체와 연결된 함수이며 점 표기법 (string.method()) 을 사용하여 호출할 수 있습니다.

>>> symbols.lower()    ## 소문자로 변환
'hpq aapl ibm msft yhoo sco goog'

>>> symbols    ## 원래 문자열은 변경되지 않음
'HPQ AAPL IBM MSFT YHOO SCO GOOG'

>>> lowersyms = symbols.lower()    ## 결과를 새 변수에 저장
>>> lowersyms
'hpq aapl ibm msft yhoo sco goog'

>>> symbols.find('MSFT')    ## 부분 문자열의 시작 인덱스 찾기
13
>>> symbols[13:17]    ## 해당 위치의 부분 문자열 확인
'MSFT'

>>> symbols = symbols.replace('SCO','')    ## 부분 문자열 바꾸기
>>> symbols
'HPQ AAPL IBM MSFT YHOO  GOOG'

실험을 마쳤으면 다음 명령을 사용하여 Python 셸을 종료할 수 있습니다.

>>> exit()

Python 리스트 다루기

리스트는 Python 의 데이터 구조 유형입니다. 데이터 구조는 데이터를 효율적으로 사용할 수 있도록 데이터를 구성하고 저장하는 방법입니다. 리스트는 숫자, 문자열 또는 다른 리스트와 같이 다양한 유형의 항목을 저장할 수 있으므로 매우 다재다능합니다. 이 단계에서는 리스트에 대한 다양한 연산을 수행하는 방법을 배우겠습니다.

문자열에서 리스트 생성

Python 리스트를 사용하려면 먼저 Python 대화형 세션을 열어야 합니다. 이것은 Python 코드를 즉시 작성하고 실행할 수 있는 특별한 환경과 같습니다. 이 세션을 시작하려면 터미널에 다음 명령을 입력하십시오.

python3

Python 대화형 세션에 들어가면 문자열에서 리스트를 만들 것입니다. 문자열은 단순히 일련의 문자입니다. 공백으로 구분된 일부 주식 기호를 포함하는 문자열을 정의합니다. 그런 다음 이 문자열을 리스트로 변환합니다. 각 주식 기호는 리스트의 요소가 됩니다.

>>> symbols = 'HPQ AAPL IBM MSFT YHOO GOOG'
>>> symlist = symbols.split()    ## 공백을 기준으로 문자열 분할
>>> symlist
['HPQ', 'AAPL', 'IBM', 'MSFT', 'YHOO', 'GOOG']

split() 메서드는 공백이 있는 모든 위치에서 문자열을 부분으로 나누는 데 사용됩니다. 각 부분은 새 리스트의 요소가 됩니다.

리스트 요소 접근 및 수정

문자열과 마찬가지로 리스트는 인덱싱을 지원합니다. 인덱싱은 리스트의 개별 요소에 해당 위치별로 접근할 수 있음을 의미합니다. Python 에서 리스트의 첫 번째 요소는 인덱스 0 을 갖고, 두 번째 요소는 인덱스 1 을 갖는 식입니다. 음수 인덱싱을 사용하여 리스트의 끝에서 요소를 접근할 수도 있습니다. 마지막 요소는 인덱스 -1 을 갖고, 뒤에서 두 번째 요소는 인덱스 -2 를 갖는 식입니다.

문자열과 달리 리스트 요소는 수정할 수 있습니다. 즉, 리스트의 요소 값을 변경할 수 있습니다.

>>> symlist[0]    ## 첫 번째 요소
'HPQ'
>>> symlist[1]    ## 두 번째 요소
'AAPL'
>>> symlist[-1]   ## 마지막 요소
'GOOG'
>>> symlist[-2]   ## 뒤에서 두 번째 요소
'YHOO'

>>> symlist[2] = 'AIG'    ## 세 번째 요소 바꾸기
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG']

리스트 반복

종종 리스트의 각 요소에 대해 동일한 연산을 수행해야 합니다. for 루프를 사용하여 이 작업을 수행할 수 있습니다. for 루프를 사용하면 리스트의 각 요소를 하나씩 거쳐 특정 작업을 수행할 수 있습니다.

>>> for s in symlist:
...     print('s =', s)
...

이 코드를 실행하면 s = 레이블과 함께 리스트의 각 요소가 출력되는 것을 볼 수 있습니다.

s = HPQ
s = AAPL
s = AIG
s = MSFT
s = YHOO
s = GOOG

멤버십 확인

때로는 특정 항목이 리스트에 존재하는지 확인해야 합니다. in 연산자를 사용하여 이 작업을 수행할 수 있습니다. in 연산자는 항목이 리스트에 있으면 True를 반환하고 그렇지 않으면 False를 반환합니다.

>>> 'AIG' in symlist
True
>>> 'AA' in symlist
False
>>> 'CAT' in symlist
False

요소 추가 및 제거

리스트에는 요소를 추가하고 제거할 수 있는 내장 메서드가 있습니다. append() 메서드는 리스트의 끝에 요소를 추가합니다. insert() 메서드는 리스트의 특정 위치에 요소를 삽입합니다. remove() 메서드는 값으로 리스트에서 요소를 제거합니다.

>>> symlist.append('RHT')    ## 끝에 요소 추가
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']

>>> symlist.insert(1, 'AA')    ## 특정 위치에 삽입
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']

>>> symlist.remove('MSFT')    ## 값으로 제거
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT']

리스트에 존재하지 않는 요소를 제거하려고 하면 Python 에서 오류가 발생합니다.

>>> symlist.remove('MSFT')

다음과 같은 오류 메시지가 표시됩니다.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

index() 메서드를 사용하여 리스트에서 요소의 위치를 찾을 수도 있습니다.

>>> symlist.index('YHOO')
4
>>> symlist[4]    ## 해당 위치의 요소 확인
'YHOO'

리스트 정렬

리스트는 제자리에서 정렬될 수 있습니다. 즉, 원래 리스트가 수정됩니다. 리스트를 알파벳순 또는 역순으로 정렬할 수 있습니다.

>>> symlist.sort()    ## 알파벳순으로 정렬
>>> symlist
['AA', 'AAPL', 'AIG', 'GOOG', 'HPQ', 'RHT', 'YHOO']

>>> symlist.sort(reverse=True)    ## 역순으로 정렬
>>> symlist
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']

중첩 리스트

리스트는 다른 리스트를 포함하여 모든 유형의 객체를 포함할 수 있습니다. 이것을 중첩 리스트라고 합니다.

>>> nums = [101, 102, 103]
>>> items = [symlist, nums]
>>> items
[['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA'], [101, 102, 103]]

중첩 리스트의 요소에 접근하려면 여러 인덱스를 사용합니다. 첫 번째 인덱스는 외부 리스트 요소를 선택하고, 두 번째 인덱스는 내부 리스트 요소를 선택합니다.

>>> items[0]    ## 첫 번째 요소 (symlist)
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>> items[0][1]    ## symlist 의 두 번째 요소
'RHT'
>>> items[0][1][2]    ## 'RHT'의 세 번째 문자
'T'
>>> items[1]    ## 두 번째 요소 (nums 리스트)
[101, 102, 103]
>>> items[1][1]    ## nums 의 두 번째 요소
102

Python 대화형 세션에서 작업을 마쳤으면 다음을 입력하여 종료할 수 있습니다.

>>> exit()

Python 딕셔너리 다루기

Python 에서 딕셔너리는 기본적인 데이터 구조입니다. 딕셔너리는 키 - 값 저장소 (key-value store) 이며, 이는 하나의 값 (값) 을 다른 값 (키) 에 매핑할 수 있음을 의미합니다. 이는 자연스러운 키 - 값 관계가 있는 데이터를 처리할 때 매우 유용합니다. 예를 들어, 사람의 이름 (키) 을 나이 (값) 에 매핑하거나, 이 랩에서 보듯이 주식 기호 (키) 를 가격 (값) 에 매핑할 수 있습니다.

딕셔너리 생성 및 접근

새로운 Python 대화형 세션을 열어 시작해 보겠습니다. 이것은 Python 코드를 한 줄씩 작성하고 실행할 수 있는 특별한 환경에 들어가는 것과 같습니다. 이 세션을 시작하려면 터미널을 열고 다음 명령을 입력하십시오.

python3

Python 대화형 세션에 들어가면 딕셔너리를 만들 수 있습니다. 이 경우 주식 기호를 가격에 매핑하는 딕셔너리를 만들 것입니다. 방법은 다음과 같습니다.

>>> prices = {'IBM': 91.1, 'GOOG': 490.1, 'AAPL': 312.23}
>>> prices
{'IBM': 91.1, 'GOOG': 490.1, 'AAPL': 312.23}

첫 번째 줄에서 prices라는 딕셔너리를 만들고 일부 키 - 값 쌍을 할당하고 있습니다. 키는 주식 기호 (IBM, GOOG, AAPL) 이고 값은 해당 가격입니다. 두 번째 줄은 prices 딕셔너리의 내용을 보여줍니다.

이제 키를 사용하여 딕셔너리의 값에 접근하고 수정하는 방법을 살펴보겠습니다.

>>> prices['IBM']    ## 키 'IBM'에 대한 값에 접근
91.1

>>> prices['IBM'] = 123.45    ## 기존 값 업데이트
>>> prices
{'IBM': 123.45, 'GOOG': 490.1, 'AAPL': 312.23}

>>> prices['HPQ'] = 26.15    ## 새 키 - 값 쌍 추가
>>> prices
{'IBM': 123.45, 'GOOG': 490.1, 'AAPL': 312.23, 'HPQ': 26.15}

첫 번째 줄에서는 키 IBM과 관련된 값에 접근하고 있습니다. 두 번째 및 세 번째 줄에서는 키 IBM의 값을 업데이트한 다음 새 키 - 값 쌍 (HPQ와 가격 26.15) 을 추가하고 있습니다.

딕셔너리 키 가져오기

때로는 딕셔너리의 모든 키 목록을 가져오고 싶을 수 있습니다. 이 작업을 수행하는 몇 가지 방법이 있습니다.

>>> list(prices)    ## 딕셔너리 키를 리스트로 변환
['IBM', 'GOOG', 'AAPL', 'HPQ']

여기서는 list() 함수를 사용하여 prices 딕셔너리의 키를 리스트로 변환하고 있습니다.

keys() 메서드를 사용하여 dict_keys라는 특수 객체를 반환할 수도 있습니다.

>>> prices.keys()    ## dict_keys 객체를 반환합니다.
dict_keys(['IBM', 'GOOG', 'AAPL', 'HPQ'])

딕셔너리 값 가져오기

마찬가지로 딕셔너리의 모든 값을 가져오고 싶을 수 있습니다. 이를 위해 values() 메서드를 사용할 수 있습니다.

>>> prices.values()    ## dict_values 객체를 반환합니다.
dict_values([123.45, 490.1, 312.23, 26.15])

이 메서드는 prices 딕셔너리의 모든 값을 포함하는 dict_values 객체를 반환합니다.

항목 삭제

딕셔너리에서 키 - 값 쌍을 제거하려면 del 키워드를 사용할 수 있습니다.

>>> del prices['AAPL']    ## 'AAPL' 항목 삭제
>>> prices
{'IBM': 123.45, 'GOOG': 490.1, 'HPQ': 26.15}

여기서는 prices 딕셔너리에서 키 AAPL을 가진 키 - 값 쌍을 삭제하고 있습니다.

키가 존재하는지 확인

딕셔너리에 키가 존재하는지 확인하려면 in 연산자를 사용할 수 있습니다.

>>> 'IBM' in prices
True
>>> 'AAPL' in prices
False

in 연산자는 키가 딕셔너리에 있으면 True를 반환하고 그렇지 않으면 False를 반환합니다.

딕셔너리 메서드

딕셔너리에는 몇 가지 유용한 메서드가 있습니다. 몇 가지를 살펴보겠습니다.

>>> prices.get('MSFT', 0)    ## 키가 없으면 값 또는 기본값 가져오기
0
>>> prices.get('IBM', 0)
123.45

>>> prices.update({'MSFT': 25.0, 'GOOG': 500.0})    ## 여러 값 업데이트
>>> prices
{'IBM': 123.45, 'GOOG': 500.0, 'HPQ': 26.15, 'MSFT': 25.0}

get() 메서드는 키와 관련된 값을 가져오려고 시도합니다. 키가 없으면 기본값 (이 경우 0) 을 반환합니다. update() 메서드는 딕셔너리에서 여러 키 - 값 쌍을 한 번에 업데이트하는 데 사용됩니다.

Python 대화형 세션에서 작업을 마쳤으면 다음을 입력하여 종료할 수 있습니다.

>>> exit()

요약

이 랩에서는 다양한 Python 내장 객체를 사용하는 방법을 배웠습니다. 구체적으로, Python 숫자와 해당 메서드에 대한 연산을 숙달하고, 인덱싱, 슬라이싱 및 내장 함수를 통해 문자열을 조작했으며, 정렬 및 중첩 구조 처리를 포함하여 리스트를 생성하고 수정했으며, 키 - 값 저장 및 검색을 위해 딕셔너리를 사용했습니다.

이러한 기본적인 기술은 보다 고급 Python 프로그래밍의 초석입니다. 이러한 연산을 정기적으로 연습하면 Python 의 내장 데이터 유형에 대한 숙련도를 높일 수 있습니다.