회원 로그인
|
Python 8강 - 객체의 복사 및 형 변환
Python08.asf
Python 8강
객체의 복사 및 형 변환
1. 객체의 복사
2. 형 변환
1. 객체의 복사
#레퍼런스 복사
- 객체의 참조 주소를 복사하는 것
>>> a = 1
>>> b = a
a
↘
1 #a가 b에 복사되는 의미가 참조한다는 것이다.
↗ #
b
>>> a = [1, 2, 3]
>>> b = [4, 5, a]
>>> x = [a, b, 100]
>>> y = x
a, b, x는 그대로 있고 y가 x의 값만 참조하게 된다.
>>> L = [1, 2, 3, 4, 5]
>>> M = L[1:4]
L → [1, 2, 3, 4, 5]
M → [2, 3, 4]
리스트의 슬라이싱은 M변수에 카피하게 된다.
02:20
#copy 모듈을 이용한 복사
- 얕은 복사(shallow copy)
- 복합 객체를 복사하되 내용은 원래의 레퍼런스로 채운다.
- 깊은 복사(deep copy)
- 복합 객체를 생성하고 내용을 재귀적으로 복사한다.
- 사전과 같은 복사 기능이 없는 객체를 복사하는데도 유용하다.
2. 형 변환
#수치형 변환
- 정수로의 형변환
- 임의의 객체에서 정수로의 형 변환 int()
>>> s = "1234"
>>> i = 10
>>> f = 4.56
>>> l = 12345678L
>>> print int(f), int(l), int(s)
4 12345678 1234
- 실수에서 정수로의 형 변환
- int() - 소수 부분을 없앤 정수
>>> int(1.3)
1
>>> int(-1.4)
-1
- round() - 반올림
>>> round(1.4)
1.0
>>> round(-1.5)
-2.0
- math.floor() - 아래 쪽 정수
>>> import math
>>> math.floor(1.2)
1.0
>>> math.floor(1.9)
1.0
>>> math.floor(-1.1)
-2.0
>>> math.floor(-1.9)
-2.0
- math.ceil() - 위 쪽 정수
>>> math.ceil(-1.9)
-1.0
>>> math.ceil(1.9)
2.0
>>> math.ceil(1.1)
2.0
- 기타 수치형으로의 형변환
- float() - 실수형으로 변환
- long() - 롱형으로 변환
- complex() - 복소수로 변환
#시퀀스 자료 형변환
- 시퀀스 자료 -> 리스트 - list()
- 시퀀스 자료 -> 튜플 - tuple()
>>> t = (1,2,3,4)
>>> l = [5,6,7,8]
>>> s = 'abcd'
>>> print list(t), list(s) #튜플과 문자열을 리스트로
[1, 2, 3, 4] ['a', 'b', 'c', 'd']
>>> print tuple(l), tuple(s) #리스트와 문자열을 튜플로 변환
(5, 6, 7, 8) ('a', 'b', 'c', 'd')
#문자열로의 형변환
- str(obj)
- 비 형식적(informal) 문자열 변환
- print문에 의해 출력되는 형식
- repr(obj)
- 형식적(formal) 문자열 변환
>>> print str('spam')
spam
>>> print repr('spam') #문자열을 정확히 표현
'spam'
- 'obj' - repr(obj)와 같다
>>> print str(l), str(t), str(s)
[5, 6, 7, 8] (1, 2, 3, 4) abcd
>>> print repr(l), repr(t), repr(s)
[5, 6, 7, 8] (1, 2, 3, 4) 'abcd'
- str과 repr의 대표적인 차이
>>> print str('spam'), str(5L), str(0.1)
spam 5 0.1 #0.1 유효자리 12자리
>>> print repr('spam'), repr(5L), repr(0.1)
'spam' 5L 0.10000000000000001 #0.10000~1 유효자리 17자리
#리스트 <-> 사전
- 사전 -> 리스트
- keys(), values(), items()
- 리스트 -> 사전
>>> T = (1,2,3,4)
>>> L = [('one', 1), ('two', 2), ('three', 3)] #튜플로 된 리스트
>>> D = {}
>>> for k, v in L: #for문을 이용한 리스트를 사전으로 변환
D[k] = v
>>> D
{'three': 3, 'two': 2, 'one': 1}
- zip()함수를 이용한 리스트 합병
>>> keys = ['one', 'two','three'] #각 리스트에 키와 값이 있을 경우
>>> values = [1, 2, 3]
>>> L = zip(keys, values) #zip()을 이용하여 리스트로 합칠 수 있다.
>>> L
[('one', 1), ('two', 2), ('three', 3)]
#문자 코드값 변환
- 문자 <-> 코드값
- chr() - 아스키 코드 -> 문자
- ord() - 문자 -> 아스키 코드
>>> chr(97) #아스키 코드 -> 문자
'a'
>>> ord('a') #문자 -> 아스키 코드
97
#진법 변환
- 임의의 진수를 10진수로
- int()
>>> int('64', 16) #16진수 64를 10진수로
100
>>> int('144', 8) #8진수 144를 10진수로
100
>>> int('101111', 2) #2진수 101111을 10진수로
47
>>> int ('14', 5) #5진수 14를 10진수로
9
- 10진수를 임의의 진수로
- oct() - 8진수로
- hex() - 16진수로
>>> oct(100) #10진수 100을 8진수로
'0144'
>>> hex(100) #10진수 100을 16진수로
'0x64'
14:20
- 2진수로
- 10진수를 2로 나누어 몫을 구하여 2진수를 알아내는 방법 알고리즘
- 책 p221, 222 예제 코드 참조
- 임의 진수로
- 책 p222의 예제 코드 참조
- 정수를 콤마가 있는 문자열로 변환
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "")
'Korean_Korea.949'
>>> print locale.format("%d", 10030405, 1)
10,030,405
Python08.asf 끝
Python 8강
객체의 복사 및 형 변환
1. 객체의 복사
2. 형 변환
1. 객체의 복사
#레퍼런스 복사
- 객체의 참조 주소를 복사하는 것
>>> a = 1
>>> b = a
a
↘
1 #a가 b에 복사되는 의미가 참조한다는 것이다.
↗ #
b
>>> a = [1, 2, 3]
>>> b = [4, 5, a]
>>> x = [a, b, 100]
>>> y = x
a, b, x는 그대로 있고 y가 x의 값만 참조하게 된다.
>>> L = [1, 2, 3, 4, 5]
>>> M = L[1:4]
L → [1, 2, 3, 4, 5]
M → [2, 3, 4]
리스트의 슬라이싱은 M변수에 카피하게 된다.
02:20
#copy 모듈을 이용한 복사
- 얕은 복사(shallow copy)
- 복합 객체를 복사하되 내용은 원래의 레퍼런스로 채운다.
- 깊은 복사(deep copy)
- 복합 객체를 생성하고 내용을 재귀적으로 복사한다.
- 사전과 같은 복사 기능이 없는 객체를 복사하는데도 유용하다.
2. 형 변환
#수치형 변환
- 정수로의 형변환
- 임의의 객체에서 정수로의 형 변환 int()
>>> s = "1234"
>>> i = 10
>>> f = 4.56
>>> l = 12345678L
>>> print int(f), int(l), int(s)
4 12345678 1234
- 실수에서 정수로의 형 변환
- int() - 소수 부분을 없앤 정수
>>> int(1.3)
1
>>> int(-1.4)
-1
- round() - 반올림
>>> round(1.4)
1.0
>>> round(-1.5)
-2.0
- math.floor() - 아래 쪽 정수
>>> import math
>>> math.floor(1.2)
1.0
>>> math.floor(1.9)
1.0
>>> math.floor(-1.1)
-2.0
>>> math.floor(-1.9)
-2.0
- math.ceil() - 위 쪽 정수
>>> math.ceil(-1.9)
-1.0
>>> math.ceil(1.9)
2.0
>>> math.ceil(1.1)
2.0
- 기타 수치형으로의 형변환
- float() - 실수형으로 변환
- long() - 롱형으로 변환
- complex() - 복소수로 변환
#시퀀스 자료 형변환
- 시퀀스 자료 -> 리스트 - list()
- 시퀀스 자료 -> 튜플 - tuple()
>>> t = (1,2,3,4)
>>> l = [5,6,7,8]
>>> s = 'abcd'
>>> print list(t), list(s) #튜플과 문자열을 리스트로
[1, 2, 3, 4] ['a', 'b', 'c', 'd']
>>> print tuple(l), tuple(s) #리스트와 문자열을 튜플로 변환
(5, 6, 7, 8) ('a', 'b', 'c', 'd')
#문자열로의 형변환
- str(obj)
- 비 형식적(informal) 문자열 변환
- print문에 의해 출력되는 형식
- repr(obj)
- 형식적(formal) 문자열 변환
>>> print str('spam')
spam
>>> print repr('spam') #문자열을 정확히 표현
'spam'
- 'obj' - repr(obj)와 같다
>>> print str(l), str(t), str(s)
[5, 6, 7, 8] (1, 2, 3, 4) abcd
>>> print repr(l), repr(t), repr(s)
[5, 6, 7, 8] (1, 2, 3, 4) 'abcd'
- str과 repr의 대표적인 차이
>>> print str('spam'), str(5L), str(0.1)
spam 5 0.1 #0.1 유효자리 12자리
>>> print repr('spam'), repr(5L), repr(0.1)
'spam' 5L 0.10000000000000001 #0.10000~1 유효자리 17자리
#리스트 <-> 사전
- 사전 -> 리스트
- keys(), values(), items()
- 리스트 -> 사전
>>> T = (1,2,3,4)
>>> L = [('one', 1), ('two', 2), ('three', 3)] #튜플로 된 리스트
>>> D = {}
>>> for k, v in L: #for문을 이용한 리스트를 사전으로 변환
D[k] = v
>>> D
{'three': 3, 'two': 2, 'one': 1}
- zip()함수를 이용한 리스트 합병
>>> keys = ['one', 'two','three'] #각 리스트에 키와 값이 있을 경우
>>> values = [1, 2, 3]
>>> L = zip(keys, values) #zip()을 이용하여 리스트로 합칠 수 있다.
>>> L
[('one', 1), ('two', 2), ('three', 3)]
#문자 코드값 변환
- 문자 <-> 코드값
- chr() - 아스키 코드 -> 문자
- ord() - 문자 -> 아스키 코드
>>> chr(97) #아스키 코드 -> 문자
'a'
>>> ord('a') #문자 -> 아스키 코드
97
#진법 변환
- 임의의 진수를 10진수로
- int()
>>> int('64', 16) #16진수 64를 10진수로
100
>>> int('144', 8) #8진수 144를 10진수로
100
>>> int('101111', 2) #2진수 101111을 10진수로
47
>>> int ('14', 5) #5진수 14를 10진수로
9
- 10진수를 임의의 진수로
- oct() - 8진수로
- hex() - 16진수로
>>> oct(100) #10진수 100을 8진수로
'0144'
>>> hex(100) #10진수 100을 16진수로
'0x64'
14:20
- 2진수로
- 10진수를 2로 나누어 몫을 구하여 2진수를 알아내는 방법 알고리즘
- 책 p221, 222 예제 코드 참조
- 임의 진수로
- 책 p222의 예제 코드 참조
- 정수를 콤마가 있는 문자열로 변환
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "")
'Korean_Korea.949'
>>> print locale.format("%d", 10030405, 1)
10,030,405
Python08.asf 끝
댓글 0개
| 엮인글 0개
285개(1/15페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
285 | [Python] 동적 import - 모듈을 변수로 받아오기 | 푸딩뱃살 | 412 | 2022.10.27 10:45 |
284 | [Python] 파이썬 3.7.7과 3.9.7의 os.path.expanduser() 차이 | 푸딩뱃살 | 455 | 2022.08.18 12:22 |
283 | [Python] error: Microsoft Visual C++ 9.0 is required. | 푸딩뱃살 | 684 | 2022.08.03 13:35 |
282 | [Python] pyscript | 푸딩뱃살 | 453 | 2022.06.09 11:21 |
281 | [Python] float is / float not is | 푸딩뱃살 | 593 | 2022.03.02 15:03 |
280 | [Python] 이터널 문자열 f | 푸딩뱃살 | 833 | 2022.01.27 16:35 |
279 | [Python] is와 ==의 차이 | 푸딩뱃살 | 485 | 2021.11.25 15:54 |
278 |
[Python] Error: ImportError: file |
푸딩뱃살 | 916 | 2021.11.16 11:24 |
277 | [Python] 파이썬 디컴파일 - uncompyle6 | 푸딩뱃살 | 774 | 2021.11.10 14:46 |
276 | [Python] 파이썬 확장자 설명 | 푸딩뱃살 | 550 | 2021.11.03 14:38 |
275 | [참고] 웹 fbx 뷰어 | 푸딩뱃살 | 470 | 2021.10.19 15:46 |
274 | [Python] enumerate() | 푸딩뱃살 | 500 | 2021.10.13 14:44 |
273 | [Python] 아나콘다에서 가상 환경 | 푸딩뱃살 | 719 | 2020.11.21 00:26 |
272 | [Python] pip로 설치 때 퍼미션 에러 | 푸딩뱃살 | 1265 | 2020.06.06 17:13 |
271 | [Python] OpenCV 10-3. 이미지 Thresholding - Otsu's Binarizatio | 푸딩뱃살 | 673 | 2020.06.05 14:01 |
270 | [Python] OpenCV 10-2. 이미지 Thresholding - Adaptive Threshold | 푸딩뱃살 | 694 | 2020.06.05 13:58 |
269 | [Python] OpenCV 10-1. 이미지 Thresholding | 푸딩뱃살 | 578 | 2020.06.05 13:56 |
268 | [Python] OpenCV 9-2. 색 추적 | 푸딩뱃살 | 772 | 2020.06.02 23:29 |
267 | [Python] OpenCV 9-1. 색공간 바꾸기 | 푸딩뱃살 | 639 | 2020.06.02 23:27 |
266 | [Python] OpenCV 8-3. 이미지 비트 연산 | 푸딩뱃살 | 528 | 2020.06.02 23:21 |