🀷🏼‍♀️ Etc.../- C, C++, Python, Android

Python μˆœνšŒν•˜κΈ° for문에 λŒ€ν•œ λͺ¨λ“  것.

Wonit 2019. 12. 6. 21:14

μˆœνšŒν•˜κΈ° : for

1. μ΄ν„°λ ˆμ΄ν„°

 

νŒŒμ΄μ¬μ—μ„œ μ΄ν„°λ ˆμ΄ν„°λŠ” 자주 μœ μš©ν•˜κ²Œ 쓰인닀.

 

μ΄ν„°λ ˆμ΄ν„°(Iterator)은 λ°˜λ³΅λ¬Έμ„ μ΄μš©ν•˜μ—¬ 데이터λ₯Ό μˆœνšŒν•˜λ©° μ²˜λ¦¬ν•˜λŠ” 것을 λœ»ν•œλ‹€.

 

λ‹€μŒμ€ μ‹œν€€μŠ€λ₯Ό μ΄ν„°λ ˆμ΄ν„°λ‘œ μ²˜λ¦¬ν•˜λŠ” μ˜ˆμ œμ΄λ‹€.

fruit = ['apple', 'mango', 'banana']
pos = 0
while pos < len(fruit):
    temp_fruit = fruit[pos]
    print(fruit[pos])
    pos += 1

μœ„λŠ” while문으둜 μ‹œν€€μŠ€λ₯Ό μˆœνšŒν•˜μ˜€λŠ”λ° for을 μ‚¬μš©ν•˜λ©΄ λ”μš± 예술적으둜 μ‚¬μš©ν•  수 μžˆλ‹€.

 

>>> fruit = ['apple', 'banana', 'apeach']
>>> for fruit_iter in fruit:
...     print(fruit_iter)
...
apple
banana
apeach

이처럼 μ΄ν„°λ ˆμ΄ν„°κ°€ 데이터λ₯Ό μ²˜λ¦¬ν•˜λ €λ©΄ 순회 κ°€λŠ₯ν•œ κ°μ²΄λΌλŠ” 쑰건이 λ§Œμ‘±ν•΄μ•Όν•˜λŠ”λ° 순회 κ°€λŠ₯ν•œ κ°μ²΄λž€

 

  • λ¬Έμžμ—΄
  • 리슀트
  • νŠœν”Œ
  • λ”•μ…”λ„ˆλ¦¬

 

λ¬Έμžμ—΄

 

ν•œ λ²ˆμ— ν•œ 문자λ₯Ό μˆœνšŒν•œλ‹€.

>>> cat = 'cat'
>>> for letters in cat:
...     print(letters)
... 
...
c
a
t

 

리슀트

λ¦¬μŠ€νŠΈλŠ” μœ„μ— λ‚˜μ˜¨ μ˜ˆμ œμ™€ λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ‚¬μš©λœλ‹€.

>>> fruit = ['apple', 'banana', 'apeach']
>>> for fruit_iter in fruit:
...     print(fruit_iter)
...
apple
banana
apeach

 

λ”•μ…”λ„ˆλ¦¬

  • ν‚€λ₯Ό 순회 : κΈ°λ³Έ κ°’
accounts = {'jang': 1684, 'kim': 1584, 'hong': 1412}
for value in accounts:
    print(value)

 

  • 값을 순회 : values()ν•¨μˆ˜ μ‚¬μš©
accounts = {'jang': 1684, 'kim': 1584, 'hong': 1412}

for value in accounts.values():
    print(value)

 

νŠœν”Œ

  • 킀와 κ°’ λͺ¨λ‘ λ°˜ν™˜ : items() ν•¨μˆ˜ μ‚¬μš©
accounts = {'jang': 1684, 'kim': 1584, 'hong': 1412}

for value in accounts.items():
    print(value)
>>>
('jang', 1684)
('kim', 1584)
('hong', 1412)

 

  • νŠœν”Œμ—μ„œ 킀와 값을 λ³€μˆ˜μ— ν• λ‹Ή : νŠœν”Œμ€ ν•œ λ²ˆμ— ν•˜λ‚˜μ”© ν• λ‹Ήν•  수 μžˆμŒμ„ 이용
accounts = {'jang': 1684, 'kim': 1584, 'hong': 1412}
for value, contents in accounts.items():
    print(value, ',',contents)
>>>
jang, 1684
kim, 1584
hong, 1412

 

2. break μ€‘λ‹¨ν•˜κΈ°μ™€ continue

 
for문의 break와 continueλŠ” whileλ¬Έκ³Ό λ™μΌν•˜κ²Œ λ™μž‘ν•˜λ―€λ‘œ python whileλ¬Έ μ •λ³΅μ˜ κ²Œμ‹œκΈ€λ‘œ ν™•μΈν•˜κΈ° λ°”λž€λ‹€.

 

3. break ν™•μΈν•˜κΈ° : else

whileλ¬Έκ³Ό 같이, forλ¬Έμ—μ„œλ„ λͺ¨λ“  ν•­λͺ©μ„ 순회 ν–ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄μ„œλŠ” 뢀가적 else문을 μ‚¬μš©ν•œλ‹€.

 

for λ¬Έμ—μ„œ accounts에 jungκ°€ 있으면 좜λ ₯ν•˜κ³  μ—†μœΌλ©΄ else문을 μ‹€ν–‰ν•˜λŠ” 예제
accounts = {'jang': 1684, 'kim': 1584, 'hong': 1412}

for value, contents in accounts.items():
    if value == 'jung':
        print(value, ',',contents)
        break;
else:
    print('jung은 μ—†μŠ΅λ‹ˆλ‹€.')

 

4. μ—¬λŸ¬ μ‹œν€€μŠ€λ‘œ μˆœνšŒν•˜κΈ° : zip()

zip()ν•¨μˆ˜λŠ” μ—¬λŸ¬ μ‹œν€€μŠ€λ₯Ό λ³‘λ ¬λ‘œ μˆœνšŒν•˜λŠ” 것이닀.

days = ['Mon', 'Tus', 'Fri']
fruits = ['apple', 'banana', 'peach']
drinks = ['water', 'coffee', 'beer']
desserts = ['ice cream', 'tea', 'herb', 'coke']

for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts):
    print(day, ': days ', drink, ':drinks, ' , fruit, ': fruits', dessert, ': desserts')
>>>
Mon : days  water :drinks,  apple : fruits ice cream : desserts
Tus : days  coffee :drinks,  banana : fruits tea : desserts
Fri : days  beer :drinks,  peach : fruits herb : desserts

이런 λ°©μ‹μœΌλ‘œ zip()ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μˆœνšŒν•  수 μžˆλŠ”λ° μ—¬λŸ¬ μ‹œν€€μŠ€μ€‘ κ°€μž₯ 짧은 μ‹œν€€μŠ€κ°€ μ™„λ£Œλ˜λ©΄ zip()은 λ©ˆμΆ˜λ‹€λŠ” 점을 μœ λ…ν•΄μ•Ό ν•œλ‹€. κ·Έλž˜μ„œ λ‹€λ₯Έ 리슀트λ₯Ό ν™•μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ cokeλŠ” 좜λ ₯λ˜μ§€ μ•Šμ„ 것이닀.

 

5. 숫자 μ‹œν€€μŠ€ μƒμ„±ν•˜κΈ° : range()

range() ν•¨μˆ˜λŠ” λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œκ°™μ€ 자료ꡬ쑰λ₯Ό μƒμ„±ν•˜μ—¬ μ €μž₯ν•˜μ§€ μ•Šκ³  νŠΉμ • λ²•μœ„ 내에 숫자 μŠ€νŠΈλ¦Όμ„ λ°˜ν™˜ν•˜λ©° μ΄λŠ” 순회 κ°€λŠ₯ν•œ 객체이닀.

 

range()ν•¨μˆ˜λŠ” 슬라이슀의 μ‚¬μš©λ²•κ³Ό λΉ„μŠ·ν•˜λ‹€.

 

>>> for x in range(0, 3):
...     print(x)
...
0
1
2
>>> list(range(0, 3))
[0, 1, 2]