Python 이터레이터(iterator), 제너레이터(generator)

Posted by jungbbong
2015. 3. 23. 22:25 프로그래밍/Python

python에서 가장 중요한 개념중에 하나인 


이터레이터와 제너레이터에 대해서 설명을하려고한다..



1. 이터레이터

 반복가능한 객체를 말한다


초간단 이해 -> 객체에 .next가 가능하다면 이터레이터가 맞음


ex. 이터레이터 =  iter(list) : list를 iter로 통하여 이터레이터를 만들었다, list는 반복가능하지만 이터레이터는 아니다.. 명시적으로 반복가능한객체로 만들어서 사용해줘야한다


1-1. 이터레이블

반복가능하다는뜻

반복(loop)연산이 가능하여 해당 위치를 이동해가면서 값을 사용할수 있는 지를 말한다

a라는 dict를 생성하여 class를 확인하면 a는 dict일뿐 이터레이터가 아니다




1-2. 이터레이션

반복가능한객체에서 해당값을 가져오는 행위



1-3. 이터함수( iter 함수)

list나 dict를 이터레이터로 만들어주는 함수


같은 예제를 반복해서 사용하긴 싫지만

-> a라는 dict를 생성하여 iter함수를 통하여 b라는 이터레이터를 만들어주었다.





보통 이터레이블하기 때문에 이터레이트는 for문과 짝을 이루어 사용한다.




2. 제너레이터

이터레이터를 만들어주는것을 말한다

= 반복가능한 객체를 만들어주는 행위


2-1. yield 란?


function에서 return과 동일한 역할을 수행한다.

= 결국 반환값이라는것인데,,,,

-> 해당 function을 yield를 사용하여 제너레이터를 만들어줌




해당 코드의 결과는 어떨까



실행 결과



get_START # generator 최초생성시점 , # yield 구문 돌입, 여기서부터 while문의 시작

for_START 0 # generator에서 yield로 리턴된 값을 받아서 for문의 시작

0

for_END 0

yield 후 0 # yield후에 잔여코드실행(while문이 아직 이때 i는 0의 상태로 실행되고 있는것), 다돌고난뒤에 while문 한번반복하여 yield를 해준다 값은 1을 리턴

for_START 1 # for loop이 최초한번 돌고 두번째 돌입

1

for_END 1

yield 후 1

for_START 2

2

for_END 2

yield 후 2

for_START 3

3

for_END 3

yield 후 3

get_END #generator 종료



여기까지 파이선에서 어려운 내용중 하나라는 이터레이터에 대해서 설명완료하였음!



C# 기본자료형, 변수

Posted by 알 수 없는 사용자
2015. 3. 22. 23:51 프로그래밍/C#

1. 기본 자료형

자료형(Data Type) : 데이터를 담을 수 있는 형식

기본 자료형(Primitive Data Type) : 개발자가 별도의 코드를 만들지 않아도 언어에서 자체적으로 제공하는 데이터 형식

다음은 C#에서 제공하는 기본 자료형이다.


자료형

 형식

 범위

 크기

 sbyte

 System.SByte

 -128 ~ 127

 부호 있는 8 bit 정수

 byte

 System.Byte

 0 ~ 255

 부호 없는 8 bit 정수

 short

 System.Int16

 -32,768 ~ 32,767

 부호 있는 16 bit 정수

 ushort

 System.UInt16

 0 ~ 65,535

 부호 없는 16 bit 정수

 int

 System.Int32

 -2,147,483,648 ~ 2,147,483,647

 부호 있는 32 bit 정수

 uint

 System.UInt32

 0 ~ 4,294,967,295

 부호 없는 32 bit 정수

 long

 System.Int64

 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808

 부호 있는 64 bit 정수

 ulong

 System.UInt64

 0 ~ 18,446,744,073,709,551,615

 부호 없는 64 bit 정수

 float

 System.Single

 ±1.5e-45 ~ ±3.4e38

 4 byte

 double

 System.Double

 ±5.0e-324 ~ ±1.7e308

 8 byte

 decimal

 System.Decimal

 ±1.0 × 1028  ±7.9 × 1028

 16 byte

 char

 System.Char

 U+0000 ~ U+ffff

 유니코드 16 bit 문자

 string

 System.String

 

 유니코드 문자열

 bool

 System.Boolean

 

 4 byte


2. 변수

변수는 변수의 이름과 값으로 구성된다.

닷넷에서 변수의 종류는 값 형식(Value Tpe)을 가리키는 변수와 참조 형식(Reference Type)을 가리키는 변수 두 가지가 있다.

2.1 값 형식(Value Type)






Value Type의 경우 값 자체가 스택 영역에 할당되고 변수는 식별자가 된다. 위 코드에서 보면 int는 자료형 a는 식별자가 된다.

그리고 스택영역에 a라는 공간을 할당하고 a의 값인 6이 기록된다.

이러한 Value Type에 속하는 것으로 sbyte, byte, ushort, short, uint, int, ulong, ulong, float, double, bool이 있다.

스택은 하나의 스레드가 생성되면 기본적으로 1MB의 용량이 할당되고 이 용량을 넘으면 스택오버플로우가 발생한다.


2.2 참조 형식(Reference Type)


Reference Type의 경우 값을 담기 위한 별도의 힙 영역의 메모리를 할당하고, 스택의 변수 값은 힙의 데이터주소를 가리킨다.

만약 참조가 없을 경우 가비지 컬렉터에 의해 삭제 된다.

힙(heap)의 경우 CLR에서 관리 힙(Managed heap)을 가리킨다. C#에서는 new로 할당되는 모든 참조형 객체는 힙에 할당된다.








출처 : 

시작하세요! C# 프로그래밍

'프로그래밍 > C#' 카테고리의 다른 글

C# Linq  (3) 2015.05.18
C# 람다식(Lamda Expression)  (9) 2015.04.11
C# 대리자(Delegate)  (288) 2015.04.08
C# 가비지 컬렉션(Garbage Collection)  (1274) 2015.03.23

JAVA 첫번째

Posted by 알 수 없는 사용자
2015. 3. 17. 22:22 프로그래밍/JAVA

java "hello world" 출력



'프로그래밍 > JAVA' 카테고리의 다른 글

JSTL Core Tag (c tag)  (4) 2015.06.02
Java의 Collections (List, Set, Map) 이해  (320) 2015.04.10
Java의 Garbage Collection  (315) 2015.03.27
Java의 String, StringBuffer, StringBuilder 설명  (277) 2015.03.24