SHEWANTSME / NOVEMBER

0 stars 0 forks source link

Python 기초 문법 정리! #5

Open SHEWANTSME opened 2 years ago

SHEWANTSME commented 2 years ago

문법 1강.

#Integer

print (" ABOUT INTEGER")
a = 1000
print(a)
a = -1
print (a)
a +=1
print(a)

/ ABOUT INTEGER 1000 -1 0 /

#실수형
print ("ABOUT 실수형")
a = 153.33
print(a)
a = -13434.323
print(a)

-> 소문자 e,E를 이용한 지수표현 방식 1e9 = 1,000,000,000 최단경로 알고리즘 -> INF 라고 보통 변수 많이 둠 = 1e9(임의의 큰수)

a = 1e9
print(a) # 실수형 데이터로 인식됨
#a = int (1e9) -> 실수형으로 바꾸려면 이렇게하면됨 -> c++은 (int)1e9이렇게 하쟈나 파이썬은 반대로 해주면 됨
a = 75.25e1  
print(a)   # a = 752.5
a = 3954e-3
print(a) #3.954

c++ 은

double s = (int )3.21; 

python은

a = 1e9
int(a)

자료형에 ()가 아니고, 숫자에 ()씌어줌

alpha = 0.3 + 0.6
if alpha == 0.9:
    print(True) # c++에서는 booltype은 대문자 ㄴㄴ함
else:
    print(False)
# 실수값의 연산이 제대로 나오지 않음. 위에서는 0,8999999 로 인식되지
# 절대 0.9로 인식되지가 않음

이럴때 사용하는 함수가 round 함수임 ( 내장함수)

a = round(123.4555, 2) # 소숫점 셋째자리에서 반올림
print (a) -> 123.46
print(" ")
print(" 연산 자료형 ")

c = 7
d = 3
print(c, d ,"뀨우우웅") // 이건 똑같지

print(F'hi I am {c} and you?{d}??') # fstring quite impressive
print(f"hi am I {3,2,3,3} and fuck ?")
# f-string 은 앞에 f붙이고 {} 중괄호 안에 다른 변수 삽입 가능

print (c/d) # 이건 ㄹㅇ 나눈 값 (실수형)
print(c%d) # 나머지
print(c//d)# 몫 -> 다른언어는 / 이거자나
print(c**d) # 거듭제곱 7^3승
print(c**0,5) # 루트7

몫이 // 거듭제곱이 인 점, 루트는 a 0,5 하면 되는게 개신기하넹

SHEWANTSME commented 2 years ago

문법2강

About LIst

a = [1,2,3,4,5,6,7,8,9]
print (a)
print (a[3])
n = 10
a = [0] *n # 크기 n 모든값이 0 인 리스트로 초기화
print (a)

[1, 2, 3, 4, 5, 6, 7, 8, 9] 4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

a = [1,2,3,4,5,6,7,8,9]
print (a)
print (a[3])
n = 10
a = [0] *n # 크기 n 모든값이 0 인 리스트로 초기화
print (a)

[1, 2, 3, 4, 5, 6, 7, 8, 9] 4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

# list indexing

a = [1,2,4,5,6,7,8,9]
print (a[7]) # 8번쨰 원소
print(a[-1]) # 맨뒤원소
print (a[-3]) # 뒤에서 세번쨰원소

9 9 7

#list slicing

print(a[0:8]) #처음껀 포함 나중껀 안포함
print(a[2:7])

[1, 2, 4, 5, 6, 7, 8, 9] [4, 5, 6, 7, 8]

#list comprehension

array = [i for i in range(10)]
# i 라는 변수가 0부터 10까지 차례대로 반복할 수 있도록 하되,
# 이떄 i라는 변수값이 차례대로 리스트의 원소로 들어오게 만듬!
#
 그니까 다른언어에서
 for(int i = 0; i<10 ; i++)
     arr[i] = i;

#이게 저거랑 같은말임
print (array)

그니까 python에서

array = [i for i in range(10)]

for(int i =0; i<10 ; i++)
    arr[i] = i;

랑 같은말임!

print (array) 하면 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 겠지? 만약 1~10까지 하고싶으면 그냥

array = [i+1 for i in range(10)] 하면 그만!

list comprehension 활용!

array  = [i for i in range(20) if i%2==1]
print(array)
# 0부터 19까지 홀수만 포함하는 리스트 출력
 --> [1,3,5,7,9,11,13,15,17,19]

array = [i*i for i in range(1,10)]
# 1부터 9까지 수들의 제곱값을 포함하는 리스트 출력
--> [1,4,9,16,25,36,49,64,81]
array = [i for i in range(10) if i&1]
print(array)

이거랑

array = []
for i in range(10):
    if i %2==1:
       array.append(i)

print(array)

이거랑 같은거임!! 
[1,3,5,7,9]

n*m 크기 배열 초기화 방법!!

array = [[0]*m for _  in range(n)]
반복을 위한 변수 noneed할때 for _ in range

--> arr  = [[0]*m while range(n)] 이게 될줄 알았는데 안되더라고 ㅋㅋ

# n번 반복될때마다 [0]*m이 초기화되니까 n*m 배열 초기화지
# 저기서 왜 for 다음에 변수가 없냐면
# list comprehension에서 변수가 필요없는 상황이라서그럼

아 참고로
arr = [[0]*m] *n 이러면 안됨,, 이러면 [1][1] 원소 가3이라 할때 [0][1]부터[n][1]까지 다 같은3이 됨

list 관련 stl

arr.append(4) -> 뒤에 4 삽입 -> O(1) arr.sort() -> 기본 오름차순 정렬 -> O(nlogn) arr.sort(reverse = True) -> 내림차순 //참고로 c++은 sort(arr, arr+n, greater()) 이렇게 했지?

이 밑에는 다 O(N) arr.reverse() -> 순서 뒤집어둠 // c++은 그냥 reverse(a.begin(),a.end()) 이렇게 이터레이터사용 arr.insert( 삽입할 위치 인덱스 , 삽입할 값) arr.count(특정값) -> 특정값 몇개있는지 카운트 arr.remove(특정값)-> 특정값원소 제거 ( 특정값 여러개면 하나만 제거)

ex)

array = [i for i in range(10) if i%2!=0]
print (array)
array.append(3)
print(array)
array.sort(reverse = True)
print(array)

array.reverse()
print(array)
array.insert(1,100)
print(array)
print(array.count(3))
array.remove(3)
print(array)

[1, 3, 5, 7, 9] [1, 3, 5, 7, 9, 3] [9, 7, 5, 3, 3, 1] [1, 3, 3, 5, 7, 9] [1, 100, 3, 3, 5, 7, 9] 2 [1, 100, 3, 5, 7, 9]

set을 이용한 특정원소 제거

alpha = [1,2,3,4,5,5,5]
remove_set = {3,5}
result  = [i for i in alpha if i not in remove_set]
print(result)

-> 그러면 alpha = [1,2,4] 만 나옴!

SHEWANTSME commented 2 years ago

문법 3강

alpha = "abcdef"
print(alpha[2:]) # cdef
print(alpha[2:-1]) #cde
print (alpha[2:4]) # cd

Tuple! -> [] 대괄호 아니고 () 소괄호 어지간한건 같은데

a = (1,2,3,4)
a[2] = 3 -> 이렇게 원소 바꾸는건 안됨

보통 튜플은 -> Hash의 key값으로 사용됨 (변경이 안되서 key값 ㄱㄴ) Memory 효율적

data = dict() -> hash쓸때 dict()씀
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

print(data)

if '사과' in data:
    print("'사과'를 키로 가지는 데이터가 존재합니다")

dict()에서

key data만 사용할때는 keys() 함수

value data만 사용할때는 values() 함수

data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

# 키 데이터만 담은 리스트
key_list = data.keys()
# 값 데이터만 담은 리스트
value_list = data.values()
print(key_list)
print(value_list)

# 각 키에 따른 값을 하나씩 출력
for key in key_list:
    print(data[key])

결과 : dict_keys(['사과', '바나나', '코코넛']) dict_values(['Apple', 'Banana', 'Coconut']) Apple Banana Coconut

집합자료형

-> 알아서 중복 거름! -> 그리고 집합으로 만들어줌!

# 집합 자료형 초기화 방법 1
data = set([1, 1, 2, 3, 4, 4, 5])
print(data) -> 리스트에서 set으로 변경하거나 ( 중복제거해줌)

# 집합 자료형 초기화 방법 2
data = {1, 1, 2, 3, 4, 4, 5} -> 걍 애초에 {} 써서 하던가
print(data)

{1, 2, 3, 4, 5} {1, 2, 3, 4, 5}

a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])

# 합집합
print(a | b) -> {1,2,3,4,5,6,7}

# 교집합
print(a & b) -> {3.4.5}

# 차집합
print(a - b) -> {1,2}

아 그리고

alpha = {3,4,5}
print(alpha)

alpha.add(6) -> 1개만 add
print (alpha)
alpha.update({7,8,9}) -> 여려개는 update -> 얘로 그냥 다 써도 무방,,, (add 왜쓰는거임)
# alpha.update({6}) 해도 됨
print (alpha)
alpha.remove(9)
print(alpha)
SHEWANTSME commented 2 years ago

문법 4강

 nn = int(input())
 data = input().split()
 # 입력받은걸 문자열 리스트로 나타냄 ['3' , '43'] 이런식으로
 data = map(int ,input().split())
 # 입력받은걸 문자열로 나타낸 애들을 int로 바꿔줌 근데 이 상태는 리스트가 아니라서    3 , 43 이런식으로
  # 다시 리스트로 받아줘야함
 data = list(map(int, input().split())) 
 # 이렇게 하면 최종적으로 list가 int형으로 공백기준 값 담김  [3, 43] 이렇게

 # 굳이 리스트로 안만들고 개수가 정해져있는 input이면
 pp,oo,ii = map(int ,input().split())
 print(pp,oo,ii) # 이렇게 써도 됨 

import sys                               --> for the fast 입출력!! java의 bufferedreader같은거
dattta = sys.stdin.readline().rstrip()
print(dattta)

# 줄바꿈 안하고 싶으면 print (alpha, end = " " ) 이게 cout << alpha<< " "; 과 같은거
SHEWANTSME commented 2 years ago

나머지 강의

a = 10
def func():
    a+=1
    print(a)

func()

이러면 에러뜸 ( 다른 언어들이랑 다르게 전역변수를 참조를 안함 함수안에서)

그래서 이렇게 해줘야함

a = 10
def func():
    global a # 전역변수 a를 참조한다
    a+=1
    print(a)

func()

이렇게 해주자~!

나머지는 필요하면 보고,, 아직은 그닥인듯?