List 리스트
여러 개의 값을 순서대로 저장하는 변경 가능한 시퀀스 자료형 == 가변의 데이터
대괄호 [ ] 로 표기
0개 이상의 객체를 포함하며, 데이터 목록을 저장
데이터는 어떤 자료형도 저장할 수 있음
my_list_1 = []
my_list_2 = [1, 'a', 3, 'b', 5]
my_lst = [1,2,'Python',['hello','world']]
중첩된 리스트 접근
my_list = [1, 2, 3, 'Python', ['hello', 'world', '!!!']]
print(len(my_list)) #5
print(my_list[4][-1]) # !!!
print(my_list[-1][1][0]) #w
리스트는 가변 ↔ 문자열
my_list = [1,2,3]
my_list[0] = 100
print(my_list) #[100,2,3]
turple 튜플
여러 개의 값을 순서대로 저장하는 변경 불가능한 시퀀스 자료형
- 0개 이상의 객체를 포함하며 데이터 목록을 저장
- 소괄호 ( )로 표기
- 데이터는 어떤 자료형도 저장할 수 있음
my_turple_1 = ()
my_turple_2 = (1,) : ,
가 없으면 정수로 인식해버리기 때문에 '반드시' 들어가야 함
시퀀스 특징은 다른 타입들과공유함
mytuple = (1,'a',3,'b',5)
my_tuple[1] = 'z'# TypeError 등장
튜플은 어디에 쓰일까?
튜플의 불변 특성을 사용한 안전하게 여러개의 값을 전달, 그룹화, 다중 할당 등
개발자가 직접 사용하기 보다 ‘ 파이썬 내부 동작’에서 주로 사용됨
x, y = (10, 20)
print(x) # 10
print(y) # 20
# 파이썬은 쉼표를 튜플 생성자로 사용하니 괄호는 생략 가능
x, y = 10, 20
range
연속된 정수
시퀀스를 생성하는 변경 불가능한 자료형
range 표현
시퀀스 자료형이라고 부르기도 함
range(n) : 0부터 n-1 까지의 숫자의 시퀀스, 슬라이싱
같이 작동함
range(n,m) : n부터 m-1까지의 숫자 시퀀스
중요
my_range_2 = range(1,10) #
print(my_range_2) # range(1,10) 출력
# => 리스트로 형 변환 시 데이터 확인 가능
print(list(my_range_2)) #[1,2,3,4,5,6,7,8,9]
Non-sequence Types 논 시퀀스
dict 딕셔너리
①key - value 쌍으로 이루어진
②순서도 없고 ③중복도 없는 ④변경 가능한 자료형
- key는 변경 불가능한 자료형만 사용(str,int,float,tuple,range 등) ⇒ key는 변경 불 가능 하다.
- value는 모든 자료형 사용 가능
- 중괄호 { } 로 표기
my_dict_1 = {} = dict()
my_dict_2 = {'key': 'value'}
my_dict_3 = {'apple': 12, 'list': [1, 2, 3]}
print(my_dict_1) # {}
print(my_dict_2) # {'key': 'value'}
print(my_dict_3) # {'apple': 12, 'list': [1, 2, 3]}
# 값 변경
my_dict['apple'] = 100
print(my_dict_3) # {'apple': 100, 'list': [1, 2, 3]}
순서가 없다 = 인덱스로 접근할 수 없다 ⇒ 반드시 ‘key’로 ‘value’에 접근해야 된다.
my_dict = { 'apple' : 12, 'list' : [1,2,3], 'apple' : 100,
}
print(my_dict) # {'apple': 100, 'list': [1, 2, 3]}
⇒ 중복이 없다 = 마지막 값으로 덮어쓰기 된다.
set 집합자료형
순서도 없고 중복도 없는 변경 가능한 자료형
순서가 없다 = 인덱스로 접근할 수 없다
수학에서의 집합과 동일한 연산 처리 가능
중괄호 { } 로 표기 = dict와 형식으로 구분함
my_set_1 = set() #set() 라는 내장함수로 빈 세트를 표현함, # dict과 구분을 위함
my_set_2 = {1, 2, 3}
my_set_3 = {1, 1, 1}
print(my_set_1) # set()
print(my_set_2) # {1, 2, 3}
print(my_set_3) # {1}
세트의 집합 연상
my_set_1 = {1,2,3}
my_set_2 = {3,6,9}
# 합집합 ( | )
print(my_set_1 | my_set_2) # {1, 2, 3, 6, 9}
# 차집합 ( - ) # {1, 2}
# 교집합 ( & ) # {3}
Other Types 기타
None
파이썬에서 ‘값이 없음’을 표현하는 자료형
Boolean
True, False 을 표현하는 자료형
- 비교/논리 연산의 평가 결과로 사용됨
- 주로 조건/ 반복문과 함께 사용
Collection
시퀀스와 비시퀀스의 공통점 : 여러개의 값을 저장하는 것
⇒ Collection
여러 개의 항목 또는 요소를 담는 자료구조
순서 여부에 따라 시퀀스와 비시퀀스가 나뉜다
Type Conversion 형변환(타입변환)
암시적 형변환 (자동) ↔ 명시적 형변환(수동)
암시적 형변환
Boolean, Numeric Type에서만 가능
print(3 + 5.0) # 8.0 정수(int) + 실수(float) ⇒ 실수(float)
print(True + 3) # 4 True를 1로 1+3
print(True + False) # 1 # 1+0 = 1
명시적 형변환
str → integer : 형식에 맞는 숫자만 가능
integer → str : 모두 가능
print(int('1')) #1 , 숫자형식에 맞는 문자열이었기 때문에 가능
print(str(1) + '등') #1등, ''만 붙이면 되서 편리함
print(float('3,5')) # 3.5
print(int(3.5)) # 3 , 0.5를 버림으로서 바꿀 수 있음
print(int('3.5')) #Value Error

#### 컬렉션 간 형변환 정리
| | str | list | tuple | range | set | dict |
|:------------: |:----------: |:----------------------: |:--------------------: |:------------: |:--------------------: |:-----------: |
| str | | O | O | X | O | X |
| list | O | | O | X | O | X |
| tuple | O | O | | X | O | X |
| range | O | O | O | | O | X |
| set | O | O | O | X | | X |
| dict | O | O (key만) | O (key만) | X | O (key만) | |
연산자
피 연산자(= 값) ↔ 연산자(값을 처리하는 것)
산술 연산자
-,+,*,/,//,% 등등
복합 연산자
연산과 할당을 함께 이뤄짐
+=, -=, *= 등등
비교 연산자
<, ≤ , ≠, : 대체로 True/ False 값을 출력하게 된다.
is
, is not
: 메모리 주소를 비교함(int와 float를 구분하는 것)
==
는 동등성(equality),is
는 식별성(identity)값을 비교하는
==
와 다름- ==은 값(데이터)을 비교하는 것이지만, is는 레퍼런스(주소)를 비교하기 때문
- is 연산자는 되도록이면 None, True, False 등을 비교할 때 사용
print(2.0 is 2)
False
논리 연산자
and(논리곱), or(논리합), not(논리부정)
not True => False
not 0 => True 암시적 형변환이 이루어 짐
비교 연산자와 함께 사용 가능
단축 평가
논리 연산에서 두 번째 피연산자를 평가하지 않고 결과를 결정하는 동작
코드 실행을 최적화하고, 불필요한 연산을 피할 수 있도록 함
⇒ 전자가 False
인데 and
면 바로 False
전자가 True
인데 or
면 바로 True
예시 문제
vowels = 'aeiou'
print(('a' and 'b') in vowels) # False
print(('b' and 'a') in vowels) # True
print(3 and 5) # 5
print(3 and 0) # 0
print(0 and 3) # 0
print(0 and 0) # 0
print(5 or 3) # 5
print(3 or 0) # 3
print(0 or 3) # 3
print(0 or 0) # 0
- and
- 첫 번째 피연산자가 False인 경우, 전체 표현식은 False로 결정.
두 번째 피연산자는 평가되지 않고 그 값이 무시
- 첫 번째 피연산자가 True인 경우, 전체 표현식의 결과는 두 번째 피연산자에 의해 결정.
두 번째 피연산자가 평가되고 그 결과가 전체 표현식의 결과로 반환
- 첫 번째 피연산자가 False인 경우, 전체 표현식은 False로 결정.
- or
- 첫 번째 피연산자가 True인 경우, 전체 표현식은 True로 결정.
두 번째 피연산자는 평가되지 않고 그 값이 무시
- 첫 번째 피연산자가 False인 경우, 전체 표현식의 결과는 두 번째 피연산자에 의해 결정.
두 번째 피연산자가 평가되고 그 결과가 전체 표현식의 결과로 반환
- 첫 번째 피연산자가 True인 경우, 전체 표현식은 True로 결정.
멤버십 연산자
특정 값이 시퀀스나 다른 컬렉션에 속하는지 여부를 확인
- in : 왼쪽 피연산자가 오른쪽 피연산자의 시퀀스에 속하는 지를 확인
- not in : 왼쪽 피연산자가 오른쪽 피연산자의 시퀀스에 속하지 않는지를 확인
시퀀스형 연산자
+
와 *
는 시퀀스 간 연산에서 산술 연산자일때와 다른 역할을 가짐
+
: 결합 연산자
print('Gildong' + ' Hong') #Gildong Hong
print([1,2] +['a','b']) #[1,2,'a','b']
*
: 반복 연산자
print('h1' *5)
print([1,2] * 2) # [1,2,1,2]
연산자 우선순위

추가로 배운 것
- list 의 인덱스의 갯수를 한정시킬때
arr = [0] * 100
을 할 경우 0~99개의 100개의 인덱스로 한정해둘 수 있음.append
를 쓰게 되면 한칸씩 늘리면서 인덱스의 값을 추가한다. - print 하기
a = 'fdfadsaf' print('fdafads \n dafdafa \n dfadasfsaf') 또는 print(a,'\n',a,'\n',a) ( X ) print(a a a)
'TIl' 카테고리의 다른 글
모듈, 제어문 (0) | 2024.01.18 |
---|---|
함수, 재귀 함수, Packing (0) | 2024.01.17 |
0115 파이썬 1 (1) | 2024.01.15 |
1월 14(토) (0) | 2024.01.13 |
파이썬 1일차(스캠) (0) | 2024.01.13 |