@ 17. 1 ~ 18
-
파이썬 컴프리 헨션의 고려사항@ 17. 1 ~ 18/파이썬 2018. 3. 15. 23:55
리스트 컴프리헨션의 문제점은 입력 시퀀스에 있는 가 값별로 아이템을 하나씩 담은 새 리스트를 통째로 생성한다는 점이다.입력이 적을 때는 괜찮지만 클때는 메모리를 많이 소모해서 프로그램을 망가뜨리는 원인이 되기도 한다. 파이썬은 이 문제를 해결하려고 리스트 컴프리헨션과 제너레이터를 일반화한 제너레이터 표현식을 제공한다.제너레이터 표현식은 실행될때 출력 시퀀를 모두 메모리에 로딩하지 않는다. 대신에 표현식에서 한번에 한 아이템을 내주는 이터레이터로 평가된다. 제너레이터 표현식은 () 문자 사이에 리스트 컴프리헨션과 비슷한 문법을 사용한다.value = [len(x) for in open('/tmp/my_file.txt')] value = (len(x) for in open('/tmp/my_file.txt')..
-
문자열 서식@ 17. 1 ~ 18/파이썬 2018. 3. 14. 00:52
서식을 사용해서 문자열을 만드는것을 문자열 포매팅이라고도 부른다.먼저 서식 지정자 - 서식지정자는 %로 시작한다. '%s' % 'Hello'>> 'Hello'라면 출력결과는 'Hello'라는 문자열이 나온다.%s를 사용뒤 % 다음에 문자열이 나오면 %s부분이 문자열로 대체된다. 심지어 문자열과 서식 지정자를 섞어서 사용할 수 있다.'Hello %s' % 'World'>>'Hello World' 서식 지정자 갯수와 % 뒤에 나오는 값과 일치가 되어야 한다.'%s %s' % ('Hello', 'World')>>'Hello World' 튜플을 사용해서 해도된다. 정수는 %d 실수 %f ** 서식지정자를 붙여버리면 결과도 붙어서 나온다. 더 간단한 포멧메서드도 있다 c#처럼..'Hello, {0}'.format..
-
파이썬 리스트 관련@ 17. 1 ~ 18/파이썬 2018. 3. 14. 00:39
리스트와 튜플 변수로 여러개의 변수를 만들 수 있다. 이런 것을 리스트 언패킹 또는 튜플 언패킹이라고 한다.x = [1,2,3]a,b,c = xprint(a,b,c)print(x)x의 리스트가 a,b,c의 각각의 변수에 1,2,3이 할당됨 리스트 관련 함수extend : 리스트의 맨 뒤에 리스트를 연결합니다. a = [1,2,3]a[len(a):] = [10]print(a)a[len(a):]이 가능한 이유는 슬라이스 때문에..범위를 벗어나도 알아서 해준다는..a[len(a)]는 인덱스 에러남 리스트를 copy로 복사하면 깊은 복사가 된다. for문에서 인덱스와 요소의 값을 동시에 출력하려면..?for index, value in enumerate(a): print(index, value)enumerate..
-
PEP8 스타일 가이드를 따르자@ 17. 1 ~ 18/파이썬 2018. 3. 12. 22:26
파이썬 개선 제안서라고 한다. 파이썬 코드를 어떻게 구성할지 알려주는 스타일 가이드.가급적 지키면 유지보수나 코드 이해가 쉽게된다. 전체 가이드는 https://www.python.org/dev/peps/pep-0008/ 가이드 중에서 반드시 따라야하는 몇 가지 규칙이 있다. 화이트 스페이스 : 공백이라는 것이고 파이썬에서는 문법적 의미가 있다.1. 탭이 아닌 스페이스로 들여쓴다.2. 문법적으로 의미있는 들여쓰기는 각 수준마다 스페이스 네 개를 사용한다.3. 표현식이 길어져서 다음줄로 이어진다면 일반적인 들여쓰기 수준에 추가로 스페이스 네개를 사용한다.4. 클래스에서 메서드는 빈 줄 하나로 구분해야 한다.5. 변수할당 앞 뒤에 스페이스를 하나만 사용한다. 명명1. 함수, 변수, 속성은 lowercase_..
-
파이썬 문법@ 17. 1 ~ 18/파이썬 2018. 3. 9. 00:58
파이썬 헷갈리는 문법** 제곱변수는 그냥 변수명하고 바로 = 대입해서 사용하면됨./ 나누기 연산// 나머지 버림 : 파이썬 2x는 /가 나누기 -- 소숫점 버림처럼 동작한다. 문자열 - 변수에 작은 따옴표 '와 큰따옴표 "를 넣어서 선언하고 사용한다. - 문자열 내부에서 "와 '를 사용하고 싶을때에는 역슬래시(\)를 사용한다. : escape_s1 = "This is \"double quote\"" \" 이렇게 \다음 "가 나오게 하는것. 그래서 위에 끝날때 \""가 되는 것 - raw문자열 표현법 : 역슬래시 자체를 문자열에 자주 포함해야 할 때가 있다. 경로표현 등..이런 경우 문자열 앞에 r을 붙여서 raw문자열로 만들어줄 수 있다. raw_s1 = r'C:\ddd\"' 멀티라인 문자열 표현법 - ..
-
스레드 동기화란?@ 17. 1 ~ 18/C# 멀티스레드 2018. 3. 5. 00:36
윈도우는 스레드가 스케줄링의 단위가 되는 선점형 멀티스레딩 시스템이다.그러므로 여러 개의 스레드가 동시에 돌아가는 솔루션에서 아무런 대책없이 스레드 사이에서 데이터를 공유할 경우 문제가 발생한다. 두개의 스레드가 있다면 하나의 스레드 작업이 끝날때까지 다른 스레드는 기다리게 해줘야한다.기다리게 한다는 것은 2가지의 의미1. 상호배제, 즉 작원에 대한 독점적 점유를 목적으로 하나의 스레드가 해당자원을 사용하는 동안 다른 스레드들이 접근하지 못하도록 막는다는 측면2. 일반적 의미로는 작업의 성격상 각 스레드들의 순차적 실행을 보장해주는 측면결국은 막는다는 의미로 통일된다. 동기화의 필요성다중 cpu가 되면서 더 중요해짐. 사실 단일 cpu일때도 엄청 중요했던건 사실임. 왜냐면 스레드 스케줄링에 의거해 스레드..
-
인덱스 관련@ 17. 1 ~ 18/DB 2018. 2. 27. 00:58
인덱스 장점검색 속도가 빨라질 수 있다.그결과 쿼리의 부하가 줄어들어서 시스템 전체의 성능이 향상된다. 인덱스 단점인덱스가 데이터베이스 공간을 차지해서 데이터베이스 크기의 10% 정도의 추가 공간이 필요하다.데이터의 변경작업(INSERT Update Delete)이 자주 발생되면 오히려 성능이 나빠진다. 클러스터형 인덱스 : 영어사전처럼 처음부터 순서가 정렬되어있다.테이블당 한개만 생성할 수 있다.행 데이터를 인덱스로 지정한 열에 맞춰서 자동 정렬한다.PK를 지정하면 자동으로 해당열에 생성된다. 또한 중복되지 않는 UNIQUE도 가능하다.(왜냐면 테이블당 한개만 생성할 수 있으니까..그렇다고PK나 UNIQUE가 반드시 클러스터형 인덱스만 아니다 비클러스터형으로 설정도 가능)(비클러스터형으로 하면 클러스터..
-
각 키 설명@ 17. 1 ~ 18/DB 2018. 2. 27. 00:21
기본 키 제약PK라고도 부르는 것. 중복이 안되며, NULL값이 안된다. 인터넷 쇼핑몰 회원가입을 보면 대부분 회원아이디로 설정한다.자동으로 인덱스가 생성된다. 테이블에선 기본키를 하나 이상의 열에 설정할 수 있다.(두개의 열을 합쳐서 기본키로 설정할수 있다.)기본키가 없어도 ㅇ테이블은 구성가능하지만 대부분 해줘야한다고 생각해야한다. 외래 키 제약FK라고도 부르는 것. 두 테이블 사이의 관계를 선언함으로써 데이터의 무결성을 보장해주는 역활을 한다.즉 외래키를 설정하면 하나의 테이블이 다른 테이블에 의존하게 된다.외래키를 정의하는 테이블을 외래키 테이블이라 하고외래키에 의해서 참고가 되는 테이블을 기준 테이블이라고 한다.반드시 기준 테이블에 데이터가 있어야 한다. 기준 테이블은 PK나 Unique 조건이 ..