range()
함수를 통한 인덱스 리스트 생성
# - range(k)
: 0부터 k-1까지의 range object를 반환함 (python3)
# - python2 에서는 list 객체를 반환
# In[5]:
L = range(10)
print(L)
print(L[::2])
print(L[::-1])
print(4 in L)
print()
print(list(L))
print(list(L)[::2])
print(list(L)[::-1])
# ### 1-3 튜플(tuple)의 정의와 기본 연산
# - 튜플: 리스트와 유사하지만 튜플 내의 값을 변경할 수 없음(immutable
하다.)
# - 적합한 사용 예
# - months = ('January','February','March','April','May','June','July','August','September','October','November',' December')
# - 각 값에 대해 인덱스가 부여됨
# - 문자열이 지닌 대부분의 연산들은 튜플도 지원
# In[5]:
t = (1,2,3)
print(len(t))
print()
print(t[0])
print(t[-1])
print(t[0:2])
print(t[::2])
print()
print(t + t + t)
print(t * 3)
print()
print(3 in t)
# ### 1-4 튜플의 상수적 성격
# - 튜플은 내용 변경 불가(immutable
)
# In[6]:
t = (1,2,3)
t[0] = 100
# - 반면에 리스트는 내용 변경 가능(mutable
)
# In[7]:
L = [1,2,3]
L[0] = 100
print(L)
# ### 1-5 사전(dictionary; dict)의 정의와 기본 사용법
# - 정수형 인덱스가 아닌 키(key)를 이용하여 값(value)을 저장하는 자료 구조
# - 저장된 각 자료에 대한 순서는 의미 없음
# - 매핑(Mapping) 함수와 비슷한 역할을 함
# - x라는 키값을 넣으면 값 y를 반환함
# In[6]:
d = {'one': 'hana', 'two': 'dul', 'three': 'set'}
print(d['one'])
# In[9]:
d = {'one': 'hana', 'two': 'dul', 'three': 'set'}
d['four'] = 'net' # 새 항목의 삽입
print(d)
d['one'] = 1 # 기존 항목의 값 변경
print(d)
print('one' in d) # 키에 대한 멤버쉽 테스트
# In[6]:
d = {'one': 1, 'two': 'dul', 'three': 'set', 'four': 'net'}
print(d.keys()) # 키만 dict_keys 객체로 추출(Python3.6), 키만 리스트로 추출(Python2.7)
print(d.values()) # 값만 dict_values 객체로 추출(Python3.6), 값만 리스트로 추출(Python2.7)
print(d.items()) # 키와 값의 튜플을 dict_items 객체로 추출(Python 3.6), 키와 값의 튜플을 리스트로 반환함(Python2.7)
# ['four', 'three', 'two', 'one']
# ['net', 'set', 'dul', 1]
# [('four', 'net'), ('three', 'set'), ('two', 'dul'), ('one', 1)]
# ***
# ## 2 내장 자료형의 정리와 객체 신원 파악
# ***
# ### 2-1 내장 자료형의 특성 정리
# | 자료형 | 저장/접근 방법 | 변경 가능성 | 저장 모델 |
# |:------:|:-----------------:|:-----------:|:--------------------:|
# | 수치형 | 직접(Direct) | 변경불가능(Immutable) | 리터럴 (Literal) |
# | 문자열 | 시퀀스 (Sequence) | 변경불가능(Immutable) | 리터럴 (Literal) |
# | 리스트 | 시퀀스 (Sequence) | 변경가능(Mutable) | 컨테이너 (Container) |
# | 튜플 | 시퀀스 (Sequence) | 변경불가능(Immutable) | 컨테이너 (Container) |
# | 사전 | 매핑 (Mapping) | 변경가능(Mutable) | 컨테이너 (Container) |
# ### 2-2 내장 자료형 알아보기
# In[7]:
print(type(3)) #정수
print(type(3.3)) #실수
print(type('abc')) #문자열
# id()
: 객체의 식별자를 반환한다.
# In[13]:
a = 500
b = a
print(id(a))
print(id(b))
print()
# 작은 값의 정수는 계속하여 별도로 객체를 생성하지 않음
x = 1
y = 1
print(id(x))
print(id(y))
print()
# 작은 값의 정수는 별도로 객체를 생성
x = 1000000000000000000
y = 1000000000000000000
print(id(x))
print(id(y))
# - is
키워드: 두 객체의 식별자가 동일한지 테스트한다.
# In[14]:
c = [1,2,3]
d = [1,2,3]
print(c is d)
a = 500
b = a
print(a is b)
x = 1
y = 1
print(x is y)
e = f = [4,5,6]
print(e is f)
# - == 연산자: 두 객체의 값이 동일한지를 테스트한다.
# In[17]:
c = [1,2,3]
d = [1,2,3]
print(c == d)
# In[18]:
x = 1
y = 1
print(x is y)
print(id(x) == id(y))
print(x == y)
# In[19]:
x = 900000000
y = 900000000
print(x is y)
print(id(x) == id(y))
print(x == y)
# ### 2-4. 레퍼런스 카운트 (Reference Count)와 쓰레기 수집 (Garbage Collection)
#
# In[9]:
x = y = z = 100
# 참고 문헌: 파이썬(열혈강의)(개정판 VER.2), 이강성, FreeLec, 2005년 8월 29일