점프투파이썬 스터디 2장 자료형 이론 복습

2024. 2. 19. 23:44학습/팀스터디

 

01 문자형 자료형 인사이트


- 문자열*문자열 = 오류
- 문자열*숫자 = 반복

a = "Life is too short"

>>> a.find('t')

8

>>> a.index('t')

8

>>> a.find('k')

-1

>>> a.index('k')

ValueError

 

",".join("문자열", [리스트], (튜플))

 

upper, lower, strip, replace, split
: 모두 문자열 자체가 변경되는 것이 아니라 변경된 값을 리턴한다.
: 변수에 할당하는 게 필요하다.

 

02 리스트 자료형 인사이트


문자열 = 문자 + 배열 -> 리스트랑 연산이나 함수 사용이 겹치는 게 많다.

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1,2,3,4,5,6]

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a * 3
[1,2,3,1,2,3,1,2,3]

리스트의 수정 및 삭제
1. index
2. del
3. 슬라이싱
4. remove
5. pop

- append() :  마지막 순서에 값을 추가한다.
- a.insert(0,4) : 인덱스와 값이 순서대로 들어간다.
- a.pop(1) : 인덱스에 해당하는 값을 return하고 row에서 제거한다.
- a.remove(3) : 인덱스 아니고 지정값을 넣는 게 특이점이다.
- a.extend() : 리스트만 괄호에 들어올 수 있으며, 리스트가 펼쳐져서 들어간다.

 

03 튜플 인사이트


- 가변형 : 리스트, 딕셔너리, 집합
- 불변형 : 정수, 실수, 문자열, 튜플

- 1개의 요소만 가지는 튜플은 (1,) 콤마를 반드시 적어준다. 그냥 적으면 int.
- 튜플은 정렬도 안된다. 불변이니까.
- 튜플을 슬라이싱한 자체를 출력시켜야 보여준다. 원본 데이터는 잘라지지 않음.

 

04 딕셔너리 인사이트


- 딕셔너리에선 비순차성이 가장 큰 특징이기에 인덱스 값을 사용하지 않는다.
- 대신 key값을 넣어서 value를 도출할 수 있다.
- 같은 기능으로 get(x, '디폴트 값')이 있는데 찾는 게 없으면 대체값을 줄 수 있다.

- 딕셔너리 key값은 불변 자료형만 넣는다. 대신 value는 아무거나 쓸 수 있다.

- 딕셔너리 함수 keys, values, items 는 dict_keys라는 개체를 리턴한다.
- 주로 반복문에서 쓰이니 메모리 덜 차지하는 객체를 생성한 것인데 리스트로 출력하면 값이 나온다.

 

05 집합 인사이트


- 딕셔너리처럼 {} 중괄호를 쓰지만 안에 단일 값만 쓰는 게 집합이다.
- 보통 중복을 허용하지 않고, 순서가 없다는 특징을 이용한다.

s1 = set([1,2,3]} 와 s1 = {1,2,3} 은 같은 값이다.

교집합 s1 & s2
합집합 s1 | s2 (중복제거)
차집합 s1 - s2

- 집합에 값 1개 추가하기 : add()
- 집합에 값 여러개 추가하기 : update()
- 특정 값 제거하기 : remove(지정값) <- 이건 리스트의 '특이'점과 같죠? 인덱스 안넣음.

 

06 불 자료형 인사이트


= 넣는다. 할당한다.
== 같니? 같으면 True, 다르면 False.

자료형의 참과 거짓 속성을 알아둔다.
- 값이 있으면 Ture, 값이 없거나 0이면 False.

- bool('python') 함수로 참과 거짓을 식별할 수 있다.

 

07 변수의 이해 인사이트


- "변수"는 객체를 "가리키는 것"이라고 말할 수 있다.
- "객체"란 자료형의 데이터(값)와 같은 것을 의미하는 말이다.
- "객체"란 메소드나 함수를 쓸 수 있는 기능적인 단위이다.
- "객체"를 저장하는 것이 실제 "변수"의 개념이다.
- "객체"는 실제로 "메모리"에 저장되어 있다.
- "변수"에 들어있는 값은 "주소"값이다. 아주 쉽죠?

이걸 배운 이유는 리스트의 복사를 이해하기 위해서다.

>>> a = [1, 2, 3]
>>> b = a
의미: a의 "주소"값을 "b" 변수에 담는다.
따라서 a, b는 주소가 같은 집이 된다.

- a, b 변수의 주소 찾기(id(a), id(b))를 하면 같은 곳이 뜬다.
- a의 객체값을 바꾸면? b도 같이 바뀐다. 가리키는 곳이 같으니까.

그럼 >>> a is b
의미: a가 가리키는 주소와 b가 가리키는 주소가 같니?
결과는 True 이다.

그렇다면 어떻게 서로 다른 존재로 카피할 수 있나?
1. 슬라이싱(튜플 처럼) 2. copy모듈 또는 리스트 자체함수 copy함수

from copy import copy
b = copy(a) 와 b = a.copy() 는 같다.

(기타) 변수 만드는 다양한 방법
a, b = 'python', 'life'
(a, b) = ('python', 'life')
(a, b) = 'python', 'life'
a, b = ('python', 'life')
[a, b] = ['python', 'life']

a = b = 'python' 근데 이건 아까 배운대로 주솟값이 같다.
a = b = [1,2,3]
a[1] = 4
b
이러면 결과 값이 [1, 4, 3] 이다.

a, b = b, a 하면 a, b의 값이 바뀐다.

 

08 되새김 문제 미해결(10, 11, 12) 다시 풀기