반응형

반복자 (Iterators)

 

Python의 반복자는 next() 함수를 사용하여 하나씩 반복할 수 있는 항목 모음입니다. 컬렉션을 반복자로 변환하려면 컬렉션을 iter() 함수에 전달해야 합니다. 다음으로, 반복자 객체를 next() 함수에 전달하여 반복자의 모든 항목을 반복할 수 있습니다. 다음 스크립트는 4개 항목이 있는 색상 목록에 대한 반복기를 만들고 4개 항목 모두를 반복합니다.

 

colors = ["Red", "Green", "Blue", "Orange"]

 

my_iterator = iter(colors)

 

print(next(my_iterator))  # 번째 item = “Red”

print(next(my_iterator))  # 번째 item = “Green”

print(next(my_iterator))  # 번째 item = “Blue”

print(next(my_iterator))  # 번째 item = “Orange”

 

Output:

Red

Green

Blue

Orange

 

생성기 (Generator)

 

생성기는 반복자의 일종으로 아이템을 하나씩 반환합니다. 생성기를 사용하면 함수 호출마다 업데이트 된 값을 갖는 함수 내부에 변수를 생성할 수 있습니다.  여러 개의 데이터를 미리 만들어 놓지 않고 필요할 때마다 즉석해서 하나씩 만들어 내는 객체를 의미합니다.

 

생성기는 항목별로 대용량 파일을 읽는 데 주로 사용됩니다. 예를 들어, 메모리에 맞지 않는 거대한 CSV 파일이 있는 경우 생성기를 사용하여 파일을 한 줄씩 읽고 가져온 레코드에 일부 프로세스를 적용한 다음 다음 줄을 읽을 수 있습니다.

 

생성기는 일반 함수 정의처럼 def 키워드를 사용합니다. 그러나 생성기 내부에서 함수 호출과 함께 업데이트 된 값을 저장할 변수를 저장하려면 yield 키워드를 사용해야 합니다. yield 변수의 값은 next()함수를 호출하여 반환할 수 있습니다.

 

다음 스크립트는 일반 함수로 method()를 정의하고 리스트 변수에 값을 담고 반환하였습니다.

 

def method():

  result = ['P', 'Q', 'R']

  return result

 

method()

 

Output:

['P', 'Q', 'R']

 

다음 스크립트는 method() 생성기를 정의하고 함수 내에서 3번의 yield 키워드를 사용하여 변수를 생성하였습니다.

 

def method():

  yield 'P'

  yield 'Q'

  yield 'R'

 

method()

 

Output:

<generator object method at 0x7fabec7b6f50>

 

다음 스크립트는 생성기에서 생성한 값을 하나씩 출력하는 예제입니다. next()함수를 한번 호출할 때마다 하나의 값이 출력됩니다.

def method():

  yield 'P'

  yield 'Q'

  yield 'R'

 

result = method()

print(next(result))

print(next(result))

print(next(result))

 

다음 스크립트는 하나의 매개변수를 허용하는 get_evens() 생성기를 생성합니다. 메서드 내에서 변수 x의 값은 0으로 초기화됩니다. x num 매개변수보다 작으면 x 값이 생성된 다음 업데이트됩니다.

 

def get_num(num):

  x = 0

  while x < num:

    yield x

    x = x + 2

 

nums = get_num(10)

print(next(nums))

print(next(nums))

print(next(nums))

print(next(nums))

print(next(nums))

 

Output:

0

2

4

6

8

 

다음 스크립트는 엄청난 크기의 리스트를 생성하는 구문입니다. 이 구문을 실행하면 메모리 오류가 발생할 것입니다.

 

a = [i*i for i in range(100000000000000000)]

print(a[0])

 

다음 스크립트는 엄청난 범위의 값을 생성기로 출력한 예제입니다. 생성기는 엄청난 범위를 갖더라도 하나씩 생성하므로 메모리 오류가 발생하지 않습니다.

 

a = (i*i for i in range(100000000000000000))

print(next(a))

반응형
반응형

람다함수

람다 함수는 단일 표현식이 있는 함수를 원할 때 특히 유용합니다. 람다 함수는 여러 매개변수를 허용하고 일부 값을 반환할 수 있는 한 줄짜리 익명 함수(이름이 없는 함수)입니다. 람다 함수를 정의하려면 키워드 람다를 작성하고 그 뒤에 매개변수의 수, 콜론 및 표현식을 작성해야 합니다.

 

lambda 매개변수1, 매개변수2, … : 매개변수를 사용한 표현식

 

람다 함수는 변수 안에 저장할 수 있습니다. 람다 함수를 호출하려면 변수 이름 뒤에 괄호를 써야 합니다. 람다 함수 매개변수에 대한 인수는 괄호 안에 전달할 수 있습니다. 다음 스크립트는 하나의 매개변수 x가 있는 람다 함수를 정의합니다. 이 함수는 x의 제곱을 반환합니다. 람다 함수는 변수 square에 저장됩니다.

 

square = lambda : x * x

 

람다 함수를 호출하려면 변수 이름, 즉 제곱을 작성하고 그 다음에 제곱을 취하려는 값을 작성해야 합니다. 다음 스크립트는 정수 2의 제곱을 인쇄합니다.

print(square(2))

 

Output:

4

 

다음 스크립트는 일반 함수로 매개변수 3개를 입력 받아서 모두 더한 결과값을 리턴하는 함수입니다.

def add_num(abc):

  result = a + b + c

  return result

 

다음 스크립트는 이전 스크립트의 add_num 함수를 람다 함수로 간단하게 표현해 보았습니다.

result = lambda a, b, c : a + b + c

 

람다 함수는 표현식을 튜플로 정의하면 튜플의 결과가 하나의 반환값으로 출력됩니다. 다음 스크립트는 두 매개변수 값을 입력받아 튜플로 리턴하는 람다 함수입니다.

result = lambda x, y : (x*2, y*3)

print(result(3, 1))

 

Output:

(6, 3)

 

재귀함수

재귀 함수는 자신을 호출하는 함수입니다. 재귀 함수는 동일한 작업을 순서대로 반복적으로 수행해야 하는 경우에 유용합니다.

다음 스크립트는 num번 자신을 호출하는 재귀 함수를 만듭니다. 여기서 num은 함수에 전달된 매개변수입니다. 함수 내에서 먼저 num의 값이 0인지 확인합니다. 값이 0이면 함수가 반환됩니다. 그렇지 않으면 함수는 num보다 하나 작은 값으로 자신을 호출합니다. 다음으로, 함수가 호출된 횟수를 알려주는 명령문이 출력됩니다. 예제에서는 함수 호출에서 값 7이 함수에 전달되고 자기 자신의 함수를 재귀적으로 7번 호출합니다.

 

def recur_func(num):

  if num == 0:

    return

  else:

    recur_func(num - 1)

    print("The function is called recursively for", str(num), "times")

 

recur_func(7)

 

Output:

The function is called recursively for 1 times

The function is called recursively for 2 times

The function is called recursively for 3 times

The function is called recursively for 4 times

The function is called recursively for 5 times

The function is called recursively for 6 times

The function is called recursively for 7 times

 

재귀 함수는 많은 용도가 있습니다. 예를 들어, 숫자의 계승(팩토리얼)을 계산하는데 유용합니다. 숫자 N의 계승은 단순히 1에서 N까지의 모든 숫자의 곱입니다. 다음 스크립트는 매개변수로 전달된 숫자의 계승을 반환하는 take_fact()라는 함수를 정의합니다.

def take_fact(num):

  if num == 1:

    return 1

  else:

    fact = num * take_fact(num - 1)

    return fact

 

take_fact(8)

 

Output:

40320

 

함수 리턴

함수는 일반 변수처럼 지역 함수 변수를 반환할 수 있습니다. 예를 들어 다음 스크립트에서 외부 global_func() return 키워드를 사용하여 local_func()를 반환합니다.

def global_func():

  print("This is a global function")

 

  def local_func():

    print("This is a local function")

 

  return local_func

 

global_func()my_func변수에 저장하면 먼저, global_func()이 수행되면서 “This is a global function”이 출력됩니다. 그 다음 local_func()을 반환해서 my_func에 저장합니다.

 

my_func = global_func()

 

my_func변수에 저장된 값은 local_func()이므로 my_func을 호출하면 “This is a local function”이 출력됩니다.

 

my_func()

 

데코레이터 함수(Decorator Functions)

데코레이터 기능을 정의하려면 수정하려는 함수가 이 데코레이터 함수에 전달됩니다. 데코레이터 함수 내에서 래퍼 함수 또는 확장 함수라는 로컬 함수를 정의합니다. 데코레이터 함수를 사용하여 오리지널 함수를 확장하면 오리지널 함수를 호출할 때마다 래퍼 또는 확장된 함수 내부 구문이 실행됩니다.

다음 스크립트에서 데코레이터 함수의 이름은 decorator_function()입니다. 수정될 오리지널 함수는 매개변수 original_function()으로 데코레이터 함수에 전달됩니다. original_function() decorator_function()으로 데코레이션하면 실행될 래퍼 또는 확장 함수는 extended_function()으로 정의됩니다. 다음 스크립트에서 extended_function() original_function()의 코드 전후에 명령문을 출력하여 original_function()의 기능을 확장합니다. extended_function() decorator_function() 내부에서 호출됩니다.

 

def decorator_function(original_function):

  def extended_function():

    print("This line executes before the original function")

    original_function()

    print("This line executes after the original function")

 

  return extended_function

 

다음 스크립트는 decorator_function()의 매개변수로 입력할 함수정의입니다.

def my_original_function():

  print("This is the original function that is extended by the extended function")

 

extended_function 변수에 decorator_function(my_original_function)을 저장한 후 extended_function()을 호출하면 다음과 같은 결과를 얻을 수 있습니다.

 

extended_function = decorator_function(my_original_function)

extended_function()

 

Output:

This line executes before the original function

This is the original function that is extended by the extended function

This line executes after the original function

 

이전 스크립트와 같이 원래 함수를 데코레이터 함수의 매개변수로 전달하는 대신 수정하려는 원래 함수를 정의하기 전에 @ 연산자 뒤에 데코레이터 함수 이름을 사용하면 표현할 수 있습니다. 다음 스크립트는 이전 스크립트에서 정의한 decorator_function()을 사용하여 my_original_function2()를 확장하였습니다.

 

@decorator_function

def my_original_function2():

  print("This function is extended using @ symbol with decorator")

 

my_original_function2()

 

Output:

This line executes before the original function

This function is extended using @ symbol with decorator

.This line executes after the original function

반응형
반응형

함수는 메서드(method)라고도 합니다.

함수는 코드의 다른 위치에서 여러 번 실행해야 하는 코드를 다른 데이터로 캡슐화하는 데 사용됩니다. 예를 들어 코드에서 함수 없이 복잡한 수학 공식을 여러 번 구현하려면 공식을 여러 번 구현하는 코드를 작성해야 합니다. 함수를 사용하면 수식을 구현하는 코드를 한 번만 작성하면 해당 코드를 실행해야 할 때마다 단일 명령으로 함수를 호출할 수 있습니다.

 

함수를 사용하면 많은 코드 줄을 절약할 수 있을 뿐만 아니라 사용성을 높일 수 있습니다. 한 응용 프로그램에 정의된 기능은 수정 여부에 관계없이 다른 응용 프로그램에서 사용할 수 있습니다. 마지막으로, 함수는 객체 지향 프로그래밍의 필수적인 부분입니다.

 

함수를 정의하려면 def 키워드를 사용하고 그 뒤에 함수 이름과 한 쌍의 괄호를 사용할 수 있습니다. 예를 들어, 다음 스크립트는 my_function()이라는 함수를 정의합니다. 이 함수는 콘솔에 간단한 문자열을 출력합니다.

 

def my_function():

  print("This is my first function")

 

함수 내에서 코드를 실행하려면 함수를 호출해야 합니다. 함수를 호출하려면 함수 이름 뒤에 괄호 쌍을 지정해야 합니다. 다음 스크립트는 my_function() 함수를 호출합니다.

 

# calling the my_function() function

my_function()

 

Output:

This is my first function

 

다음 스크립트는 구구단의 7단을 출력하는 함수를 만들고 함수를 호출하여 출력하는 예제입니다.

 

def print_seven():

  for i in range(1, 10):

    print("7 x ", str(i), " = ", str(7*i))

  

print_seven()

 

Output:

7 x  1  =  7

7 x  2  =  14

7 x  3  =  21

7 x  4  =  28

7 x  5  =  35

7 x  6  =  42

7 x  7  =  49

7 x  8  =  56

7 x  9  =  63

 

매개변수화된 함수

매개변수화된 함수는 데이터를 전달할 수 있는 함수입니다. 함수에 전달된 데이터를 저장할 변수를 함수 매개변수라고 하며 괄호 안에 정의됩니다. 예를 들어 다음 함수에는 message라는 매개변수가 하나 있습니다. 이 매개변수에 값을 전달하면 for 루프를 사용하여 출력이 5번 표시됩니다.

 

def show_message(message):

  for _ in range(5):

    print(message)

 

show_message("function test")

 

Output:

function test

function test

function test

function test

function test

 

함수에 여러 매개변수를 전달할 수도 있습니다. 예를 들어, 다음 함수는 message count라는 두 개의 매개변수를 사용합니다. message 매개변수에 전달된 값은 count 매개변수에 전달된 값의 횟수만큼 콘솔에 인쇄됩니다. count 매개변수에 3을 입력하였으므로 message3번 출력됩니다.

 

def show_message(messagecount):

  for _ in range(count):

    print(message)

 

show_message("function test", 3)

 

Output:

function test

function test

function test

 

매개변수화된 함수의 또 다른 예를 살펴보겠습니다. 다음 스크립트는 add_numbers()라는 이름의 함수를 정의합니다. 이 함수는 세 개의 매개변수 값을 계산하고 그 합계를 콘솔에 출력합니다. 3개의 매개변수에 각각 a=3, b=2, c=3을 입력하면 3개를 합산하여 출력합니다.

 

def add_number(abc):

  result = a + b + c

  print(result)

 

add_number(3, 2, 3)

 

Output:

8

 

마지막으로 다음 스크립트는 display_table() 함수에 매개변수로 전달된 숫자의 구구단을 출력하는 display_table() 함수를 정의하고 매개변수로 3을 입력하고 display_table(3)을 호출하였습니다.

 

def print_table(num):

  for i in range(1, 10):

    print(str(num), " x ", str(i), " = ", str(num*i))

  

print_table(3)

 

Output:

3  x  1  =  3

3  x  2  =  6

3  x  3  =  9

3  x  4  =  12

3  x  5  =  15

3  x  6  =  18

3  x  7  =  21

3  x  8  =  24

3  x  9  =  27

 

함수로부터 리턴값을 반환(리턴)하는 방법

함수에 값을 전달할 수 있는 것처럼 함수도 값을 반환할 수 있습니다. 함수에서 값을 반환하지 않으면 함수의 결과를 저장하는 변수에 null 값이 저장됩니다. 예를 들어 다음 스크립트를 실행하면 add_numbers() 함수가 실행되고 출력에 숫자 8이 출력됩니다.

 

def add_number(abc):

  result = a + b + c

  print(result)

 

result = add_number(3, 2, 3)

 

숫자 8add_number()함수 내에서 print()함수로 출력한 결과입니다. 함수 외부에 정의된 결과 변수인 result에는 저장되지 않습니다. 결과 변수의 값을 출력해 보면 None입니다.

 

def add_number(abc):

  result = a + b + c

  print(result)

 

result = add_number(3, 2, 3)

print(result)

 

Output:

8

None

 

함수가 값을 반환하게 하려면 return 키워드를 사용해야 합니다. 반환될 값은 return 키워드 다음에 옵니다. 예를 들어 다음 스크립트에서 add_numbers() 메서드는 결과 변수에 저장된 값을 함수 호출에 반환합니다. 함수 외부에 정의된 결과를 출력해보면 result8이 담겨있는 것을 확인할 수 있습니다.

 

def add_number(abc):

  result = a + b + c

  return result

 

result = add_number(3, 2, 3)

print(result)

 

Output:

8

 

함수가 여러 값을 반환하도록 만들 수도 있습니다. 값은 튜플 형식으로 반환됩니다. 다음 스크립트는 3개의 매개변수 값을 입력하고 3개의 리턴값을 출력하는 예제입니다.

 

def add_number(abc):

  result_a = a * 3

  result_b = b * 3

  result_c = c * 3

  return result_a, result_b, result_c

 

x, y, z = add_number(3, 2, 3)

print(x)

print(y)

print(z)

 

Output:

9

6

9

 

매개변수 입력값이 몇 개가 될지 모를 경우 처리하는 방법

매개변수에 *를 사용하면 매개변수로 몇 개를 입력해도 상관없습니다.  매개변수 이름 앞에 *를 붙이면 입력값을 전부 모아서 튜플로 만들어 줍니다. 다음 스크립트는 add_many(*args)함수를 정의하고 매개변수에 3, 2, 3을 입력하고 함수를 호출하였습니다.

 

def add_many(*args):

  result = 0

  for i in args:

    result = result + i

  return result

 

result = add_many(3, 2, 3)

print(result)

 

Output:

8

 

add_many()를 호출시에 입력으로 10개를 사용하더라도 add_many(*args)로 가능합니다.

 

def add_many(*args):

  result = 0

  for i in args:

    result = result + i

  return result

 

result = add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

print(result)

 

Output:

55

 

키워드 파라메터

매개변수 앞에 별 두개(**)를 붙이면 입력값을 딕셔너리로 만들어줍니다. 다음 스크립트를 참조하시면 됩니다.

 

def print_kwargs(**kargs):  

  for i in kargs:

    print(i, " = ", kargs[i])

  

print_kwargs(a=3, b = 3)

 

Output:

a  =  3

b  =  3

 

전역 변수와 로컬 변수 그리고 함수

정의된 위치에 따라 Python 변수 및 함수는 전역 및 로컬의 두 가지 유형으로 나눌 수 있습니다. 함수나 클래스 외부에 정의된 변수를 전역 변수라고 합니다. 전역 변수는 어디에서나 액세스할 수 있습니다. 반면에 지역 변수는 함수 내부에 정의됩니다. 지역 변수는 함수 내에서만 접근할 수 있습니다. 다음 스크립트는 하나의 전역 변수 num1과 하나의 지역 변수 num2를 정의합니다. num1 변수는 add_ten() 함수 내에서 액세스할 수 있습니다. 함수 내부에 num1 num2 변수가 추가됩니다.

 

# global variable

num1 = 7

 

def add_ten():

  # local variable

  num2 = 3

  result = num2 + num1

 

print(result)

 

add_ten()

 

위의 스크립트를 실행하면 add_ten() 함수 내부를 포함한 모든 곳에서 전역 변수 num1에 액세스할 수 있기 때문에 오류가 발생하지 않는 것을 볼 수 있습니다.

 

Output:

15

 

다음 스크립트에서는 add_ten() 함수 외부에서 전역 변수 num1과 지역 변수 num2에 모두 액세스하려고 합니다.

 

# global variable

num1 = 7

 

def add_ten():

  # local variable

  num2 = 3

  result = num2 + num1

  print(result)

 

add_ten()

print(num1)

print(num2)

 

출력에서 num2 변수가 정의되지 않았다는 오류가 표시됩니다. 이는 num2 변수가 add_ten() 함수 내부의 지역 변수이고 Python 인터프리터가 add_ten() 함수 외부에서 이를 찾을 수 없기 때문입니다.

 

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-33-129c9a7c52f3> in <module>()
     10 add_ten()
     11 print(num1)
---> 12 print(num2)

반응형
반응형

반복문 (While, For)

while

while문은 반복해서 문장을 수행해야 하는 경우 사용합니다.

 

while문의 구조는 다음과 같습니다.

while 조건문:

    수행할 문장 1

    수행할 문장 2

 

while문도 if문처럼 조건문이 True이면 조건에 해당하는 문장이 수행됩니다. if문과 다른점은 조건문이 True일 경우 조건문 내의 문장이 계속 수행됩니다. 다음 스크립트는 while 조건문이 True이면 수행할 문장 12가 계속 수행됩니다. 프로그램이 무한루프에 빠지므로 주의하시기 바랍니다.

while True:

    수행할 문장 1

    수행할 문장 2

 

Output:

수행할 문장 1

수행할 문장 2

수행할 문장 1

수행할 문장 2

수행할 문장 1

수행할 문장 2

…….

 

다음 스크립트는 조건문을 만족하면 5번 출력하는 예제입니다. 조건문 j < 5에서 j의 초기값은 0입니다. 만약 j값이 변화가 없으면 무한루프에 빠지게 됩니다. j값의 변화를 주기 위해서 j = j + 1를 하여 1번 반복할 때마다 1씩 증가시키도록 하였습니다.

j = 0             변수 j 0으로 초기화한다.

 

while j < 5:      # j 5보다 작을 때만 조건문이 True

  j = j + 1       # j 1 증가시킨다.

  print("{0} = hello".format(j))  

 

Output:

1 = hello

2 = hello

3 = hello

4 = hello

5 = hello

 

while문 강제로 빠져나오기

while문을 돌다가 어떤 조건이 되었을 때 빠져나오려면 break를 사용하면 됩니다.

다음 스크립트는 break를 사용한 예제입니다. input()함수는 사용자로부터 키보드 입력을 기다리는 함수입니다. 사용자가 숫자를 입력하면 money변수에 숫자가 할당됩니다. 0이 아닌 숫자를 입력하면 “money=입력한 숫자를 출력합니다. 0을 입력하면 while문을 빠져나오면서 “while문을 빠져나왔습니다가 출력됩니다.

while True:

  money = int(input("액수를 입력해 주세요: "))

  if money == 0:

    print("액수가 0입니다.")

    break         # while문을 빠져나갑니다.

  else:

    print("money = {}".format(money))

 

print("while 문을 빠져나왔습니다.")

 

Output:

액수를 입력해 주세요: 300

money = 300

액수를 입력해 주세요: 200

money = 200

액수를 입력해 주세요: 0

액수가 0입니다.

while 문을 빠져나왔습니다.

 

while 문의 맨 처음으로 돌아가기

while문을 돌다가 어떤 조건이 되었을 때 while문의 처음으로 돌아가기 위해서 continue를 사용합니다.

다음 스크립트는 j 0으로 초기화하고 while문 안에서 j 1씩 증가시키면서 출력하였습니다. 그러나 j 2가 되었을 때는 continue를 만나서 while문의 처음 위치로 돌아가므로 2가 출력되지 않습니다.

j = 0             변수 j 0으로 초기화한다.

 

while j < 5:      # j 5보다 작을 때만 조건문이 True

  j = j + 1       # j 1 증가시킨다.

  if j == 2:

    continue      처음으로 돌아간다.

  print("{0} = hello".format(j))  

 

Output:

1 = hello

3 = hello

4 = hello

5 = hello

 

for

파이썬의 for문은 다른 프로그래밍 언어와 조금 다릅니다. 파이썬에서 for문은 일련의 객체를 반복합니다. , 시퀀스에 있는 각 요소값들을 반복합니다.

for문의 구조는 다음과 같습니다. 여기서, 시퀀스는 리스트, 튜플, 문자열을 사용할 수 있습니다. body는 시퀀스에 있는 모든 요소들을 사용할 수 있습니다.

for p in sequence:

    body

 

다음 스크립트는 for문을 사용하여 str변수에 담긴 “String”을 문자 하나씩 출력하는 예제입니다.

str = "String"

 

for i in str:

  print(i)

 

Output:

S

t

r

i

n

g

 

다음 스크립트는 리스트에 담겨있는 요소를 출력하는 예제입니다. list_ex 리스트 변수에 3개의 요소가 담겨있습니다. for문에 처음 진입하면 i는 첫번째 요소인 ‘one’을 할당하고 출력합니다. 그 다음 ‘two’‘three’를 순서대로 출력합니다.

list_ex = ['one', 'two', 'three']

 

for i in list_ex:

  print(i)

 

Output:

one

two

three

 

다음 스크립트는 리스트의 요소값에 튜플이 담겨있는 경우 for문으로 출력하는 예제입니다.

list_ex = [(1, 2), (3, 4), (5, 6)]

 

for (first, last) in list_ex:

  print("first = {}, last = {}".format(first, last))

 

Output:

first = 1, last = 2

first = 3, last = 4

first = 5, last = 6

 

for문에서 continue 사용하기

for문에서도 while문과 마찬가지로 for문을 실행하는 도중에 어떤 조건에 들어오면 그 이후 문장은 실행되지 않고 for문의 처음 위치로 이동해서 다음 요소값으로 이동합니다.

 

다음 스크립트는 continue의 간단한 예제입니다. 리스트 요소값 중 ‘two’를 만났을 때 continue를 사용하였습니다. ‘two’일 경우 print(i)가 실행되지 않습니다.

list_ex = ['one', 'two', 'three']

 

for i in list_ex:

  if i == 'two':

    continue

  print(i)

 

Output:

one

three

 

for문에서 range함수 사용하기

range함수는 숫자 리스트를 자동으로 만들어 주는 함수입니다. 사용법은 다음과 같습니다.

range(숫자)   # 0, 1, 2, 3, 4, 5, … , 숫자-1 까지 만들어집니다.

ex) range(5)   # 0, 1, 2, 3, 4

range(시작 숫자, 끝 숫자)    # “시작 숫자부터 끝 숫자 -1”까지의 숫자를 만들어줍니다.

ex) range(1, 5)    # 1, 2, 3, 4

 

다음 스크립트는 range(3)를 이용하여 for문으로 python을 출력하는 예제입니다.

for i in range(3):

  print("{} : python".format(i))

 

Output:

0 : python

1 : python

2 : python

 

다음 스크립트는 range함수에서 값을 감소시키면서 출력하는 예제입니다.

for i in range(3, 0, -1):

  print("{} : python".format(i))

 

Output:

3 : python

2 : python

1 : python

 

리스트 내포 사용하기

리스트 안에 for문을 포함하면 더 직관적이고 편리하게 사용할 수 있습니다. 사용법은 다음과 같습니다.

표현식 for 항목 in sequence if 조건

 

다음 스크립트는 list_1에 담겨있는 요소들 각각에 2를 곱한 후 list_2에 담는 예제입니다.

< 리스트 내포를 사용하지 않은 경우 >

list_1 = [2, 4, 6, 8]

list_2 = []

 

for i in list_1:

  list_2.append(i*2)

 

print(list_2)

 

Output:

[4, 8, 12, 16]

 

<리스트 내포를 사용한 경우>

list_1 = [2, 4, 6, 8]

list_2 = [i*2 for i in list_1]

print(list_2)

 

Output:

[4, 8, 12, 16]

 

다음 스크립트는 리스트 내포를 사용하고 if 조건문까지 사용한 예제입니다. list_1에 있는 요소들 중에 짝수인 요소만 list_2에 담는 예제입니다.

list_1 = [1, 2, 3, 4, 5, 6]

list_2 = [for i in list_1 if i % 2 == 0]

print(list_2)

 

Output:

[2, 4, 6]

반응형

+ Recent posts