본문 바로가기
728x90

전체 글121

Unit30. *args / **kwargs (가변인자; Variadic Parameters) 인자 Argument에는 두 종류가 있다. 그리고 항상 함수를 실행시키는 인자를 줄 때에는, positional은 필수조건이므로 무조건 줘야 하고, 앞에 줘야하고, keyword는 필수가 아니므로 안주면 생략가능하고, positional갯수를 채운 뒤에 줘야한다. Positional arguments : 정해지는 인자 ; first, second Keyword arguments : 키워드로 잡는 인자 ; third, fourth 코드로 보면, def save_ranking(first, second, third=None, fourth=None): .... save_ranking('Alice', 'Bella', 'Mike', fourth = 'Daniel') 이렇게 될 때, Positinal 두개 다 채워서.. 2022. 11. 29.
참고) map + lambda lambda (원래모습 : 바뀐모습) print( (lambda x,y: x + y)(10, 20) ) 인자까지 한꺼번에 줄 수있음 map (def명, 넣을것) 순회가능한 데이터를 저 함수에 넣어 ouput을 도출하겠다. 는 뜻. map(변환 함수, 순회 가능한 데이터) map은 꼭 list로 변환해줘야 값을 볼 수 있음. def list_mul(x): return x * 2 result = list(map(list_mul, [1, 2, 3])) print(result) lambda + map map이 lambda 식 자체를 인수로 가짐. i 를 i*2로 바꿀꺼고 (lambda), [1,2,3]을 i로 돌릴꺼야 (map) result = list(map(lambda i: i * 2 , [1, 2, 3]).. 2022. 11. 29.
참고) iterable, iterator 차이점 iterable : 순환 가능한. 그냥 가능하다는 능력치. 나는 수학을 잘한다. 이런거. iterator : 순환가능자. 그 능력치를 컨트롤하는자. 수학선생님. 선생님은 수학을 당연히 잘한다. iterator는 당연히 iterable 하다. 지도 편달하는 코드가 들어간다. 학생이 수학을 잘해도 지도편달은 어려울 수 있따. iterable하다고 iterator는 아니다. 참고 : https://velog.io/@clueless_coder/%ED%8C%8C%EC%9D%B4%EC%8D%AC-iterable%EA%B3%BC-iterator-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EB%AD%90%EC%98%88%EC%9A%94 [파이썬] iterable과 iterator 의 차이가 .. 2022. 11. 29.
참고) 최댓값, 최솟값 (함수에서 return 잘 활용하는법) list_data = [30, 20, 30, 40] def minmax_function(x_list): # 1번 함수에 최솟값, 최댓값 함수를 품는다. def inner_min_function(x): # 1-1 최솟값 length = len(x) min_result = x[0] for i in range(length): if min_result > x[i]: min_result = x[i] return min_result # "인덱스별" 최솟값 리턴받음. 계속 갱신하게되고 제일 마지막값남음. def inner_max_function(x): # 1-2 최댓값 length = len(x) max_result = x[0] for i in range(length): if max_result < x[i]: max.. 2022. 11. 29.
참고) Enumerate/Yield/Generator/Try/Accept/Multiprocessing Enumerate for문에서 인덱스도 같이 출력할 때. for i, value in enumerate(리스트명) my_list = ['a','b','c','d'] for i, value in enumerate(my_list): print("순번 : ", i, " , 값 : ", value) Generator, yield yield를 쓰면 generator로 연결된다. generator는 lazy iterator. 반복문을 출력할 때에도 주르륵 출력하는 것이 아니라, 하나 출력하고 쉬고, 하나 출력하고 쉬고. 데이터가 많을 때 메모리 사용이 효율적이어서 자주 사용하는 파이썬의 기능. 참고 사이트 : https://www.daleseo.com/python-yield/ 파이썬의 yield 키워드와 제너레이터.. 2022. 11. 29.
AI에게 필수과목이 필요하지 않을까. 사람이 사람다워야 사람이다. 그렇다면, AI도 AI다워야 AI겠지? 내가 생각하는 AI의 제 1 강령. AI는 사람에게 이로워야 한다.. ㅠㅠ 제발 ㅠㅠ --- 사람과 AI가 가장 다른점이 무엇일까. 아니 사람이 달라하야 하는 이유는 무엇인가. 사람이 사람답다는 의미가 어떤 의미인가. 우리는 가정교육을 받는다. 물론 어려운 가정도 있겠지만, 가정에서 되지 않는 부분은 학교에서, 사회에서 받고있다. 능력을 배우기보다는 소위말하는 도덕적관념을 학습한다. 양심, 배려, 협동, 선과악, 예절, 그리고 종교와 사랑. 이런것들을 베이스로 학습시킨 후에 능력을 학습해야하지 않을까. 똑똑한 범죄자 하나를 잡으려면 한나라 전체 경찰들이 다 동원되어야 한다. 그 사실에 더 무서운 방법으로 발전하는 범죄 수법들을 우리는 매.. 2022. 11. 29.
프로그래머스) 배열의 평균값, 중복된 숫자갯수, 피자나눠먹기 내 답안 평균구하는거,, 예전에 엄청 힘들게 했던거 같은데 잘풀려서 너무 좋다.. import math를 해와서, 올림은 .ceil() 버림은 .floor() 반올림은.round() 2022. 11. 28.
프로그래머스) 머쓱이네 양꼬치 답안 잘 실행되는데,, 프로그래머스에서 안넘어간다. 여튼 머쓱이는 이렇게 양꼬치를 먹었네. 2022. 11. 28.
Unit 26. 세트(set) Set : 집합 합집합, 교집합, 차집합등의 연산을 가능케 하는 집합으로 {값1,값2,값3} 이런식ㅇ로 이루어져 있음. 출력을 할 때에는 randomly하게 출력하기 때문에, index를 지정하여 출력이 불가하고, 집합안에 중복된 것은 알아서 하나만 출력. 딕셔너리와 형태 주의하여 쓰기 >>> c = {} # 이렇게 빈 중괄호를 치면, 빈 딕셔너리가 됨. >>> type(c) >>> c = set() # 꼭 이렇게 set()이라고 지정해야 세트가됨. >>> type(c) set.union(세트1, 세트2) : 합집합 {1,2,3,4,5,6} 논리연산자 and와 같은 원리 set.intersection(세트1,세트2) : 교집합 {3,4} set.difference(세트1, 세트2) : 대칭차집합 {1,2.. 2022. 11. 28.
조별학습) 평균구하기 (딕셔너리) 내코드 타입에 걸려서 추출이 안될때에는 for문으로 꺼내와서 리스트에 넣기. ilst는 numpy.mean으로 평균이 구해짐. 2022. 11. 28.
UNIT 25. 딕셔너리 응용 1. 기본 1) 추가 .'딕셔너리명'.update(키=값) : 키가 문자열일때만! 딕셔나리 안의 키의 값을 수정하는 것. 만약 그 키 값이 없으면 자동으로 { } 안에 추가됨. .update(a=200, b=300) : 여러가지 값을 한꺼번에 업데이트 .update(딕셔너리) : 키가 문자열이 아니어서 바로 키=값을 못한다면, a = {1:'일',2:'이'} 이렇게 a 딕셔너리를 추가함. .update(리스트 or 튜플) : 리스트는 [[키1, 값1], [키2, 값2]] 형식으로 키와 값을 리스트로 만들고 이 리스트를 다시 리스트 안에 넣어서 키-값 쌍을 나열 .update(반복가능한객체) : 딕셔너리에 for문으로 키와 값을 더하고 싶을때 쓸 수 있을 것 같음. (zip([1,2],['one','two.. 2022. 11. 28.
오답노트) 간단명료 코드 만들기 1. 가장 뒤에 있는 파일명만 프린트하기 path = 'C:\\Users\\dojang\\AppData\\Local\\Programs\\Python\\Python36-32\\python.exe' filename = path.split('\\') print(filename[-1]) >>> filename = path[path.rfind('\\') + 1:] 2022. 11. 28.
조별학습) 구구단 만들기 내답안 조원들 답안 count, %d , % 사용 print(f' ') .format 사용 format 복습 '{인덱스}' .format(값) : { } 이 위치에 format 뒤의 데이터의 인덱스 값을 넣어줘. ' Let me see.. {1} {2} {0}?'. format('me', 'You', 'love') 그래서 print('{0} x {1} = ', format(i,j), i*j) '{0} x {1} = ' . format(i,j) 까지 한뭉텅이로, format 뒤에 (i,j) 인수를 넣어줌 2022. 11. 28.
참고) 함수에 대하여. 매개변수(parameter), 인자(argument), 요소(element) 의 차이점 def shopping_list(date): print(date + '의 구매목록') print(['벤츠 2대','람보르기니 1대','강남빌딩 2개']) shopping_list('1월 23일') 만약 이렇게 shopping list라는 함수를 선언한다고 가정했을 때, 매개변수 (parameter) :입력값의 자리에 들어오는 함수 내부의 'date' 인자(argument) : 외부에서 이 함수를 불러주기 위해 넣어주는 '1월 23일' 요소(element) : 리스트 안의 여러값 중 하나의 값, '벤츠 2대' 하하.. 이렇게 작성하는 날이 올꺼야! 스코프(scope) 특정 위치에서 어떤 변수에 접근할 수 있는지, 또 한.. 2022. 11. 28.
프로그래머스) 각도기 내답안 처음에 print (1) 이렇게 넣었었는데, 결과값은 맞지만 오류가 났다. 웹에서 검색해보니 파이썬은 아니지만 return으로 푸신분이 계셔서 그렇게 해봤더니 맞다고 나왔다. 다른분 답안 if angle 2022. 11. 27.
프로그래머스) 나이 출력 내답안 다른사람들은 아예 2023에서 age를 뺴고 +1을 하지 않은 경우도 있었다. 2022. 11. 27.
프로그래머스) 몫 구하기 (클래스문법 업데이트하기) 내답안 / 는 float값을 가질 수 있다는 것 주의하기. 그래서 data type을 int로 지정해줬다. 다른사람 답안을 보고있자니 // 가 생각났다. //는 나머지를 버리고 무조건 int로 반환한다. 그래서 다시한번 해봤다. 다른사람의 답안 이게 머선코드냐구.. __ 이거는 클래스 했을때 잠깐 본 거 같은데, 일단 클래스문법은 복잡하니 다음주중에 배울때 다시 업데이트 하기로 하고, floordiv는 찾아봤더니, self // value라고 한다. 그럼 지정해주지 않았는데도, num1을 self로 인식하고, num2를 value로 인식한다는 뜻인가? 희한하네,, 뭔가 고오급진 이 코드.. 숙제 시간이 얼마없으니 다음에 업데이트 꼭 하기. 2022. 11. 27.
프로그래머스) 나머지 구하기 내답안 이번에도 lambda 쓰기 lambda 좋다. 한줄에 끝나고. 뭔가 코드가 짧아질수록 고오급진 느낌이 든다 ㅋㅋ 다른사람답안 은 패쓰! 왜냐면 lambda가 제일 짧기때문.. 2022. 11. 27.
프로그래머스) 두 수의 곱 내답안 방금 배운 lambda 응용했음. 후후 다른사람 답안 다른사람들은 대부분 def 를 썼는데,, 이부분은 패쓰! 2022. 11. 27.
프로그래머스) 숫자 비교하기 내답안 답은 잘 나왔는데, 오류가 떠서,, 왜그럴까나? answer 변수를 살리니 성공 다른사람답안 return하세요 1을. 만약 num1과 num2가 같다면. 그렇지 않으면 -1 return 1 if num1==num2 else= -1 콜론 없고, 괄호도 없다는 것 유의하기. 2022. 11. 27.
프로그래머스) 두 수의 차 1. 두 수의 차 내 답안 다른사람 답안 lambda를 써서 세 줄 코드를 한 줄에 끝냈다. 그 와중에 댓글 ㅋㅋㅋ 좀치네 ㅋ 부럽 ㅋㅋ lambda 문법은 lambda a : b (a를 b로 변환하겠다) def 에 대한 정의와 요소 선언을 한 줄에 끝내다니.. 필사해보기 solution = lambda num1, num2 : num1 - num2 lambda 뒤에는 괄호쓰지 않는데, 자꾸 습관적으로 괄호를 쓰고 있음.. 고치기 2022. 11. 27.
Unit24. 문자열 함수, 포매팅, format함수, %d 1. 바꾸기 replace('바꿀문자열', '새문자열') : 단어 >> 문자열 바꾸기 str.maketrans('바꿀문자', '새문자') : 단어안의 스펠링 >> 문자열 바꾸기 .translate(변수명) : 번역. 즉 apply .upper() : 문자열을 모두 대문자로 바꿈 .lower() : 문자열을 모두 소문자로 바꿈 2. 분리하고 합체하기 .split('기준문자열') : 기준문자열을 기준으로 스트링을 분리함. '구분자'.join(리스트) : 구분자를 리스트사이에 끼워서 하나의 스트링으로 만듬 3. 삭제 .strip('삭제할것') : 왼(lstrip),오(rstrip),양쪽 다 됨 4. 정렬 .ljust(숫자) : 왼,오(rjust) 다됨. 숫자만큼 문자열의 길이를 만들어 놓고, 정렬함. .cen.. 2022. 11. 26.
Unit 22. 2차원 리스트 1. 기본문법 요소 추출 : 리스트[세로인덱스][가로인덱스] 요소 값 할당 : 리스트[세로인덱스][가로인덱스] = 값 >>> a = [[10, 20], [30, 40], [50, 60]] >>> a[2][1] # 출력 : 세로 인덱스 2, 가로 인덱스 0인 요소 60 >>> a[0][1] = 1000 # 값 할당 : 세로 인덱스 0, 가로 인덱스 1인 요소에 >>> a[0][1] 1000 2차원 리스트와 튜플 수정 가능여부 a = ((10, 20), (30, 40), (50, 60)) # 튜플 안에 튜플을 넣은 2차원 튜플 b = ([10, 20], [30, 40], [50, 60]) # 튜플 안에 리스트를 넣음 c = [(10, 20), (30, 40), (50, 60)] # 리스트 안에 튜플을 넣음 .. 2022. 11. 25.
Unit 22. List 와 Tuple / 리스트표현식(list comprehension) List [ ] : mutable sequence type (변경할 수 있는 시퀀스 자료형) Tuple ( ) : immutable sequence type (변경할 수 없는 시퀀스 자료형) method (method = 함수) 1. 기본내용 Add (list만 가능) append(요소) : element 한 개 or list 하나씩 중첩으로. 꼭 하나씩 추가 가능 extend([리스트]) : list + list = 1개의 list 로 가능. append로 일일이 못할때 유용 insert(인덱스번호,요소) : 특정인덱스에 요소 하나를 추가 insert(0, 요소): 리스트의 맨 처음에 요소를 추가 insert(len(리스트), 요소): 리스트 끝에 요소를 추가 슬라이스로도 추가가능 : 리스트 끝에 하나.. 2022. 11. 25.
참고) Stack & Queue 이 둘은 ADT로써 실물이 존재하지 않는 "상상속의 구조"이다. ADT (Abstract Data Type) : 추상적 자료구조 자료구조의 방법이 코드로 정의되지 않고 그 구조의 행동양식으로만 규정됨. array + 규칙. 서로 규칙이 다름. 1. Stack (팬케이크 무더기) Last In, First Out. stack은 무더기라는 뜻이다. 1,2,3,4,5 array를 90도로 눕여서 1을 가장 아래, 5를 가장 위로 놓는다. 가장 따끈한 팬케이크가 제일 위에 쌓이고 (Last in), 제일 빨리 먹히는 것 처럼(First out) 5번만 읽고, 삭제가능. e.g. 뒤로가기, ctr+z, 2. Queue (맛집에 줄선 사람들) First in, First Out. stack과 달리 90도 뒤집지 않.. 2022. 11. 25.
Fund 4. Github에 Git Push 하기 (Git & Github의 차이점) Git & GitHub Git : 소스코드 버전 관리 시스템 ; 개발을 진행하며 작성하는 소스 코드가 업데이트 되는 버전을 기록해두고 관리함.\ 더 쉽게 이해한 바로는 ,, 로컬(내컴터) 버전관리 툴. GitHub : 온라인 서비스 : Git으로 관리하는 프로젝트를 불러오고(hosting), 협업할 수 있게 해주는 서비스. 협업가능한 웹사이트 Git은 리눅스의 창시자 리누스 토를발즈가 만든 오픈소스 툴이다. 전세계 사람들이 동시다발적으로 리눅스를 함께 개발하고 관리하다 보니, 여러 개발자가 짠 코드를 한번에 합치고, 버전도 나눠야 했다. 그래서 리눅스 프로젝트의 코드 버전을 관리하기 위한 소프트웨어를 짰고, 그것이 Git이다. GitHub는 이런 Git을 더 잘 쓰게 도와주는 온라인 서비스다. Git을 .. 2022. 11. 25.
참고) Scalar, Vector, Matrix, Tensor 1. Scala : 단일 숫자 / 0차 텐서 / 소문자 normal n : 양의 정수 집합 (1,2,3..) z : 양,음수와 0의 집합 (...,-2,-1,0,1,2,...) q : 유리수 (z + 분수) 값 (Value)을 나타냄 2. Vector : Scala의 배열 / ordered arrays / 1차 텐서 / 소문자 Bold Scala는 값 1개만 나타낸다면, Vector는 크기와 방향, 속도와 거리, 속도와 속도차, 텍스트에서 단어간의 연관성, 이미지에서의 픽셀 집적도 (intensity) 등을 인코딩할 수 있게 함. 머신러닝에서는 feature vector라고 표현되기도 함. (Which are their individual components specifying how important .. 2022. 11. 24.
Unit 20. FizzBuzz Practice 1. 1에서 100까지 출력 3의 배수는 Fizz 출력 5의 배수는 Buzz 출력 3과 5의 공배수는 FizzBuzz 출력 My answer 1 숫자 대신 fizz와 buzz를 출력했어야 했다. Answer 2 Practice 2. 3과 5의 공배수 Answer 혹은, if i % 15 == 0: 이렇게 15로 나눴을때 나머지가 없는 값을 줘도 됨. 코드 줄이기 문자열 * 1 = True , 문자열 * 0 = False 라는 특징을 이용한 것. 중간에 +를 넣으면 공배수에 FizzBuzz라고 출력가능 Practice 3. 2과 11의 배수, 공배수 처리하기 다음 소스 코드를 완성하여 1부터 100까지의 숫자를 출력하면서 2의 배수일 때는 'Fizz', 11의 배수일 때는 'Buzz', 2.. 2022. 11. 24.
Unit 19. Star tree ; 중첩 loop Star tree output * ** *** **** ***** input 1 - ok 하지만 중첩 루프를 쓰지 않은 결과라 업데이트가 필요. input 1-1 별갯수가 j와 같게 하면 j가 1일때 별이 한개만 나올꺼라고 생각했는데, ----> 방향으로 j의 갯수만큼 별이 다 채워져버렸다. input 1-2 옆방향의 별의 갯수가 i의 갯수와 같아서 이렇게 넣었는데, 트리가 옆으로 4개나 나왔다. 옆으로 나오는 횟수를 i만큼으로 줄여야 할 것 같은데,, input 1-3 옆으로가 줄어들긴 했다. 딱 i만큼으로 줄었다. 생각이 잘못되었나보다. 횟수가 i만큼이 아니라 1만큼이어야 한다. input 1-4 Blank를 줄여야한다. input 1-5 Answer if j 2022. 11. 24.
Fund 3. Terminal(Linux OS), Hardware Computer Hardware 반도체의 제작과정을 너무 잘 보여줘서 링크! : https://www.youtube.com/watch?v=6-tKOHICqrI&t=4s CPU(Central Processing Unit, 중앙처리장치 : 반도체인 실리콘 웨이퍼 위에 집적회로(Integrated Circuits, IC)를 포토리소그래피(photolithography) 공정을 통해 회로를 인쇄해 만듬 기계어 : CPU칩이 처리할 수 있는 명령어 Compile : 우리가 쓰는 프로그래밍 언어(C, C++, Python)를 기계어로 바꿔주는 것. 제조사 : 삼성(Exynos등), 애플(A,M시리즈등), 퀄컴 등.. 구분 : 32bit, 64bit : CPU가 한번에 읽고 쓸 수 있는 데이터의 크기. 프로세스 할당.. 2022. 11. 24.
728x90