Gidhub BE Developer

제어문과 연관된 유용한 함수

2018-02-01
goodGid

제어문과 연관된 유용한 함수

range() - 수열의 생성

range( ['시작값'], '종료값'[, '증가값'])
  • ‘종료값’은 수열의 종료조건으로 필수 항목이며, 생성되는 수열에 포함되지 않는다.

  • ‘시작값’과 ‘증가값’은 선택적으로 입력 가능 !

  • 입력하지 않으면 Default : ‘시작값’은 0, ‘증가값’은 1이다.

  • range() 함수를 수행하면 이터레이션이 가능한 객체가 반환된다.

>>> list(range(10))                # 종료값만 있는 경우 10은 포함되지 않는다.
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list(range(5,10))               # 시작값, 종료값이 있는 경우
[5, 6, 7, 8, 9]

>>> list(range(10,0,-1))           # 시작값, 종료값, 증가값이 있는 경우
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

>>> list(range(10,20,2))            # 10부터 20까지 짝수 출력
[10, 12, 14, 16, 18]

  • range() 함수를 이용해 10에서 20까지 짝수를 출력하는 예제 코드
>>> for i in range(10,20,2):
...     print(i)

10
12
14
16
18

리스트 항목과 인덱스 값을 동시에 얻는 법

enumerate('시퀀스 타입 객체'[, '시작값' = 0])
  • 첫 인자인 ‘시퀀스 타입 객체’에는 시퀀스형 객체, 즉 이터레이션이 가능한 객체가 입력된다.

  • ‘시작값’은 인덱스 순번의 시작값으로 생략 가능 !
    생략시 0부터 시작.

  • 함수를 실행하고 나면 튜플 형태로 (인덱스, 시퀀스 객체의 아이템)이 반환된다.

>>> L = [100, 15.5, "Apple"]
>>> for i in enumerate(L):
...     print(i)
... 
(0, 100)
(1, 15.5)
(2, 'Apple')


>>> for aa in enumerate(L):       ## i가 아닌 다른 변수명을 사용해도 된다 !
...     print(aa)
... 
(0, 100)
(1, 15.5)
(2, 'Apple')

>>> for i, v in enumerate(L, 101):
...     print(i, v)
... 
101 100
102 15.5
103 Apple


리스트 내장

<표현식> for <아이템> in <시퀀스 타입 객체> (if <조건식>)
  • 기존의 리스트 객체를 이용해 조합, 필터링 등의 추가적인 연산을 통해 새로운 리스트 객체를 생성하는 경우,
    리스트 내장(List Comprehensions)은 매우 효율적이다.

  • 시퀀스 타입객체에는 시퀀스형 객체(리스트, 튜플, 셋) or 이터레이션이 가능한 객체가 들어간다.

  • 아이템은 리스트 객체의 개별 아이템

  • 표현식은 개별 아이템을 사용해 사상 함수(mapping) 형태로 새로운 리스트 객체를 생성하는데 사용한다.

  • if 조건식은 조건식에 맞는 원본 리스트의 아이템을 선별하는 데 사용되며 생략 가능하다.

>>> l = [1,2,3,4,5]               # 리스트 객체
>>> [i ** 2 for i in l]
[1, 4, 9, 16, 25]

>>> t = ("apple", "banana", "orange")     # 튜플 객체
>>> [len(i) for i in t]         # 각 문자열의 길이를 리스트로 반환
[5, 6, 6]

>>> d = {100:"apple", 200:"banana", 300:"orange"}   # 사전 객체
>>> [v.upper() for v in d.values()]           # 사전의 문자열을 대문자로 변환
['APPLE', 'BANANA', 'ORANGE']

>>> [i ** 3 for i in range(5)]        # range()함수를 사용하여 수열 생성
[0, 1, 8, 27, 64]
  • “if <조건식>"을 이용하면 다양한 조건을 만족하는 아이템만을 원본 리스트 객체에서 뽑아낼 수 있다.
>>> l = ["apple", "banana", "orange", "kiwi"]
>>> [i for i in l if len(i) > 5]          # 원본 리스트에서 문자열 길이가 5를 초과하는 아이템만 출력
['banana', 'orange']
  • 원본 리스트가 2개 이상의 다수인 경우에도 리스트 내장을 이용해 각 리스트의 조합을 만들어 낼 수 있다.
>>> L_1 = [3,4,5]
>>> L_2 = [1.5, -0.5, 4]
>>> [ x*y for x in L_1 for y in L_2]
[4.5, -1.5, 12, 6.0, -2.0, 16, 7.5, -2.5, 20]
  • 위와 같은 경우, L_1 리스트의 모든 인자가 L_2의 모든 인자와 조합되는 것을 알 수 있다.

Back : While / For

Comments

Content