티스토리 뷰
# for문
인자로 받은 시퀀스형 객체와 이터레이션이 가능한 객체를 순차적으로 순회한다
for문의 기본형태는 아래와 같다
구문
ex) for문을 이용해 리스트와 사전의 각 항목을 출력
>>>for i in ex:
print(i, type(i))
Apple <class 'str'>
100 <class 'int'>
15.23 <class 'float'>
>>>dic = {"apple": 100, "orange": 200, "banana": 300}
>>>for k, v in dic.items():
print(k, v)
apple 100
orange 200
banana 300
# while문
조건식이 참인 동안 반복해 내부 블록을 수행한다
조건식은 내부 블록의 구문을 수행하기전에 최초로 평가되고, 그 이후에는 매번 구문을 수행한 이후에 재평가가 이뤄져 거짓으로 평가되면 while문을 벗어난다
구문
ex) 5부터 1까지 출력
>>>value = 5
>>>while value > 0:
print(value)
value -= 1
5
4
3
2
1
# break, continue, else
break문과 continue를 이용해 반복문을 제어할 수 있다
반복문 순회 도중 break를 만나면 반복문의 내부 블록을 벗어나고, continue를 만나면 그 이후 내부 블록을 수행하지 않고 다음 아이템을 선택해 시작지점으로 이동한다
>>>L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>for i in L:
if i>5:
break
print("Item: {0}".format(i))
Item: 1
Item: 2
Item: 3
Item: 4
Item: 5
>>>L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>for i in L:
if i % 2 == 0:
continue
print("Item: {0}".format(i))
반복문 수행 도중 break로 인해 종료되지 않고 끝까지 수행했을때 else 블록을 수행한다
>>>for i in L:
if i % 2 ==0:
continue
print("Item: {0}".format(i))
else:
print("Exit without break")
Item: 1
Item: 3
Item: 5
Item: 7
Item: 9
Exit without break
# 제어문관련 내장함수
- range(): 수열의 생성
종료값은 수열의 종료조건으로 필수항목이며, 생성되는 수열에 포함되지 않는다
시작값과 증가값은 선택적으로 입력할 수 있으며, 입력하지 않는 경우는 기본적으로 '시작값: 0, 증가값: 1' 이다
>>>list(range(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, 12, 14, 16, 18]
- 리스트 항목과 인덱스 값을 동시에 얻는 방법
첫 인자인 시퀀스타입 객체에는 이터레이션이 가능한 객체가 입력되며, 시작값은 인덱스 순번의 시작값으로 생략가능하다
실행결과는 튜플형태로 반환된다
>>>L = [100, 15.5, "Apple"]
>>>for i in enumerate(L):
print(i)
(0, 100)
(1, 15.5)
(2, 'Apple')
>>>L = [100, 15.5, "Apple"]
>>>for i, v in enumerate(L, 101):
print(i, v)
101 100
102 15.5
103 Apple
- 리스트 내장
ex) 리스트, 튜플, 사전, range() 함수에 대해 리스트 내장을 이용해 새로운 리스트 객체 만들기
>>>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]
>>>[ i **3 for i in range(5)]
[0, 1, 8, 27, 64]
>>>fruit=["apple", "banana", "orange", "kiwi"]
>>>[i for i in fruit if len(i) >5]
['banana', 'orange']
- filter 함수
리스트 내장의 if문으로 필터링하는 방법과 동일한 기능을 하는 함수
필터링할 함수 대신 None을 사용하면 원본과 동일한 내용이 출력된다
>>>L = [10, 25, 30]
>>>IterL = filter(None, L) #필터링 수행하지 않음
>>>for i in IterL:
print("Item: {0}".format(i))
Item: 10
Item: 25
Item: 30
ex) 필터링 적용
>>>def GetBiggerThan20(i):
return i>20
>>>L = [10, 25, 30]
>>>IterL = filter(GetBiggerThan20, L)
>>>for i in IterL:
print("Item:{0}".format(i))
Item: 25
Item: 30
- zip 함수
zip함수의 반환값인 이터레이터는 list 함수를 이용해 리스트 객체에 저장할 수 있다
zip()으로 결합된 결과를 분리하기 위해 호출할 때 결합된 객체나 이터레이터 인자앞에 * 를 사용할 수 있다
>>>X = [10, 20, 30]
>>>Y = ['A', 'B', 'C']
>>>RetList = list(zip(X, Y))
>>>RetList
[(10, 'A'), (20, 'B'), (30, 'C')]
>>>X2, Y2 = zip(*RetList)
>>>X2
(10, 20, 30)
>>>Y2
('A', 'B', 'C')
- map 함수
객체를 순회하며 각 아이템을 첫 인자인 함수에 전달하고, 함수의 수행결과를 이터레이터 객체로 생성해서 반환한다
리스트 객체의 모든 아이템을 10씩 증가시키는 예제
>>>L = [1, 2, 3]
>>>def Add10(i):
return i +10
>>>for i in map(Add10, L):
print("Item: {0}".format(i))
Item: 11
Item: 12
Item: 13
>>>RetList = list(map((lambda i: i+10), L)) #람다함수로 작성
>>>RetList
[11, 12, 13]
'Programming > Python' 카테고리의 다른 글
[Python] Dictionary (0) | 2018.08.26 |
---|---|
[Python] List (0) | 2018.08.25 |
[Python] 조건문 if (0) | 2018.08.18 |
[Python] 주석처리 (0) | 2018.08.12 |
[Python] python2와 python3의 차이점 (0) | 2018.08.11 |