1. 변수
변수의 기본성질 : 데이터 저장소
1. 변수 명명법
- 알파뉴메릭(알파벳, 숫자, _언더바)으로 구성되어있다.
- 숫자로 시작할 수 없다.
- 한글이 되긴하지만 비추.
- 대소문자를 구별한다.
변수명 예제
# 예시 변수 대입연산자(=) 값
abc = 0
_abc = 0
abc_ = 0
___ = 0
# 1ab=0 # 이렇게 하면 에러. 숫자가 앞에 올수 없다.
# ab c = 0 # 띄어쓰기는 알파뉴메릭 아님. 띄어쓰기는 들어갈 수 없다.
# 변수이름은 대소문자를 구별한다
abc=1
Abc=2
aBc=3
abC=4
# 대표 출력문 print( 변수 )
print(abc,Abc,aBc,abC) = 1 2 3 4
# print 생락시 해당 변수의 값을 보여줌
abc = 1
# ()생략하고 출력해도 ()로 묶여서 출력된다.
abc,Abc,aBc = (1, 2, 3)
2. 데이터 타입
숫자형
- int : 정수형
- float : 실수형
문자형 : str
집합형
- 리스트[ ]
- 튜플 ( )
- 딕셔너리 { }
2-1. 리스트[ ]
- 이종 데이터간의 수정가능한 집합체.
- 중복 가능
리스트 예제
# 리스트 = [값1, 값2]
my_list = ['오예스', '몽쉘', '초코파이', '초코파이'] # 중복가능
your_list = [1, 2, 3.14, True, False, '문자열'] # 타입모두 다 넣을 수 있다.
empty_list = [] # 빈 리스트
print(my_list[0]) # => 오예스
print(my_list[0:2]) # => ['오예스','몽쉘']
print('몽쉘' in my_list) # => True
print(len(my_list)) # => 4
my_list[1] = '몽쉘카카오' # 값 수정
my_list.append('빅파이') # 값 추가
my_list.remove('오예스') # 값 삭제
# 리스트 확장
mom_list = ['빅파이', '오뜨']
my_list.extend(mom_list)
# 중복값을 제외한 리스트값만 뽑고싶다
my_list = ['오예스', '몽쉘', '초코파이', '초코파이']
my_dic = dict.fromketys(my_list)
print(m,y_dict)
# => {'오예스':None, '몽쉘':None, '초코파이':None}
my_list = list(my_dic)
print(my_list)
# => ['오예스', '몽쉘', '초코파이']
2-2. 튜플( )
- 이종데이터간의 수정 불가능한 집합체, 키값으로 인덱스를 적용.
- 중복 가능
튜플 예제
# * 별사용
num = (1,2,3,4,5,6,7,8,9,10)
(one,two,*others) = num
# one에 1, two에 2를 튜플로 넣고, 3~10은 others에 리스트로 넣어진다.
2-3. 딕셔너리 { }
- key값-value값을 기반으로 한 집합형태
- key값은 중복이 안됨
딕셔너리 예제
person = {'이름':'나도', '나이':7, '키':120, '몸무게':23}
# key값
print(person['나이']) => 7
print(person.get('별명')) => None # 없는 key값 get으로 불러오면 None
# value값 변경
person['키'] = 130
# value값 여러개 변경 -> update 메서드 사용
person.update({'키':140, '몸무게':26})
# 특정 key:value 삭제 -> pop 메서드 사용
person.pop('몸무게')
2-4. 세트 { }
- 값들의 순서가 보장되지 않는 수정 가능한 집합형태
세트 예제
A = {'돈가스', '보쌈', '제육덮밥'}
B = {'짬뽕', '초밥', '제육덮밥'}
# 교집합
print(A.intersection(B)) => {'제육덮밥'}
# 합집합 : 중복 허용 안함
print(A.union(B)) => {'돈가스', '보쌈', '제육덮밥', '짬뽕', '초밥'}
# 차집합
print(A.difference(B)) => {'돈까스', '보쌈'}
----------------------------------------------------------
my_set = {'A','B', 'C'}
my_set.clear() #모든값삭제
my_set.remove('B')
리스트(List) | 튜플(Tuple) | 세트(Set) | 딕셔너리(Dictionary) | |
선언 | list = [ ] | tuple = ( ) | set = { } | dic = {key : value} |
순서 보장 | O | O | X | O |
중복 허용 | O | O | X | X |
접근 | list(index) | tup[index] | X | dic[key] dic.get(key) |
수정 | O | X | X | O (value) |
추가 | append() insert() extend() |
X | add() update() |
dic[key] = value update() |
삭제 | remove( ) pop( ) clear( ) |
X | remove( ) discard( ) pop( ) cleart( ) |
pop( ) popitem( ) clear( ) |
2. 수식 (연산자)
2-1. 대입연산자 = 우측의 값을 좌측에 대입한다.
대입연산자 예시
# 대입연산자 / 사칙연산
# 대입연산자를 통해 변수에 숫자를 대입
# 앞에 띄어쓰기, 탭넣으면 에러뜸
a = 3
b = 4
c = a + b
c = a - b
c = a * b
c = a / b
print(c) # 한 명령에 한개만 들어간다 # =7, -1, 12, 0.75
2-2. 산술연산자
- 사칙연산자 : + - * /
- 나머지와 몫 연산자 : % //
- 거듭제곱 : **
산술연산자 예시
# 몫 연산자
d = b // a
d = 1
# 나머지 연산자
e = b % a
print(b,"을 ",a,"로 나눈 몫은 ",d,"이고 나머지는 ",e,"이다")
= 4 을 3 로 나눈 몫은 1 이고 나머지는 1 이다
2-3. 비교연산자 (비교 우위를 참 거짓으로 표현)
>, <, >=, <=, ==, !=
비교연산자 예시
# 비교연산자
print(a,b,'크다',a>b)
print(a,b,'작다',a<b)
print(a,b,'같다',a==b) # =하나만 쓰면, 같냐고(==) 물어본게 아니라 대입이라서 에러로 뜸.
print(a,b,'다른가',a!=b)
print(a,b,'크거나 같다',a>=b)
print(a,b,'작거나 같다',a<+b)
# 3 4 크다 False
# 3 4 작다 True
# 3 4 같다 False
# 3 4 다른가 True
# 3 4 크거나 같다 False
# 3 4 작거나 같다 True
# 거듭제곱
a=4
print(a**2) # =>16
2-4. 논리연산자(불린대수) and, or, not
논리연산자 | 명칭 | 기능 | 예 |
and | 논리곱 | 양쪽이 참일때만 참 | a and b |
or | 논리합 | 한쪽이 참이면 참 | a or b |
not | 논리부정 | 반대의 결과 | not a |
논리연산자 예시
#1
a=True
b=3>4
print('논리곱 and :', a and b) # a와 b 모두 true여야 true 출력
print('논리합 or:', a or b) # a 와 b 둘중 하나만 true여도 true 출력
print('논리부정 not :', not a) # a가 true면 반대로 False 출력
=
논리곱 and : False
논리합 or: True
논리부정 not : False
#2
score=82
if(score>=75 and score<=85):
print('해당자 입니다')
else:
print('해당되지 않습니다')
=해당자 입니다
묵시적 논리값
# a가 0이거나 빈문자열이 아니면 참이다.
a='False'
if(a):
print('참입니다')
else:
print('거짓입니다')
# =참입니다
# not 논리연산자
a=''
if(not a):
print('참입니다')
else:
print('거짓입니다')
# =참입니다 # a가 빈칸이라 '거짓입니다'인데 not이라 반대값 출력
# a가 빈문자열이라 False인데 not a 반대라서 True 이다
a=''
b=1
if(not a and b):
print('참입니다')
else:
print('거짓입니다')
# =참입니다
3. 제어문 if / for
3-1. if 조건문
if 조건식1 :
참일때 실행
elif 조건식2 :
참일때 실행
else :
3-2. 반복문 for
for 변수 in 반복 범위 또는 대상 :
반복할 명령블럭
반복문 for 예제
# range에 한계값. 한계값 이전 숫자까지 생성
for i in range(5):
print(i)
# 0
# 1
# 2
# 3
# 4
# range에 시작과 한계값과 스텝(몇씩 건너띄어라)
for i in range(2, 10, 2):
print(i)
# 2
# 4
# 6
# 8
for i in range(1,5):
for j in range(1,5):
print('i:',i,'j:',j, end='')
print('-------')
# i: 1 j: 1i: 1 j: 2i: 1 j: 3i: 1 j: 4-------
# i: 2 j: 1i: 2 j: 2i: 2 j: 3i: 2 j: 4-------
# i: 3 j: 1i: 3 j: 2i: 3 j: 3i: 3 j: 4-------
# i: 4 j: 1i: 4 j: 2i: 4 j: 3i: 4 j: 4-------
# range에 시작과 한계값
for i in range(2,7):
print(i)
# 2
# 3
# 4
# 5
# 6
3-3. 한줄 for 문
[반복실행문 for 반복변수 in 반복범위 if 조건문]
list comprehension 기본 예제
# 원래 이렇게 길게 for문 작성
dict={'사과':1000,'복숭아':1500,'바나나':2000}
# 사과[1000], 복숭아[1500]로 표현하고싶다
fru=[]
for k,v, in dict.items(): #k=key값, v=value값
d='{}[{}]'.format(k,v)
if(v>1000): # 조건추가. value값이 1000이상인것만
fru.append(d)
print(fru)
# =>['복숭아[1500]', '바나나[2000]']
# 한줄 for문으로 하면
#'{}[{}]'.format(k,v) 이게 즉시 리스트로 만들어줌
fru=['{}[{}]'.format(k,v) for k,v in dict.items() if v>1000] # value값이 1000이상인것만
fru
# =>['복숭아[1500]', '바나나[2000]']
numbers = [1,2,3,4,5]
result = [i**2 for i in numbers]
print(result)
# =>[1, 4, 9, 16, 25]
# 조건문추가 : i가 3보다 큰것만
square = [i**2 for i in numbers if i>3]
print(square)
# =>[16, 25]
products = ['JOA-2020', 'JOA-2021', 'SIRO-2021', 'SIRO-2022']
# 모든 모델명 뒤에 SE 붙여줘
prod_se = [p+'SE' for p in products]
# 모든 모델명을 소문자로 바꿔줘
prod_lower = [p,lower() for p in products]
# 22년 제품만 뽑는데 뒤에 (최신형)이라는 글자 붙여줘
prod_new = [p+'(최신형)' for p in products if p.endswith('2022')]
'🛠️Skill > Python' 카테고리의 다른 글
[Python] 데이터 합치기 Join, merge, concat (0) | 2022.10.11 |
---|---|
[Python] 클래스(class) / 인스턴스, 객체, self, super 이해하기 (0) | 2022.10.05 |
[Python] Function/가변인자, 지역변수, 전역변수, 사용자 입력 함수 input (0) | 2022.10.03 |
[Python] 브로드캐스팅, 슬라이싱(slicing), 인덱싱(indexing) (0) | 2022.10.03 |
[Python] Numpy란? 배열생성,차원변경/ 행렬곱(내적dot)/ 원소접근 (0) | 2022.10.02 |
댓글