E D R , A S I H C RSS

Python For Statement

Python 의 For Statement 에 κ΄€ν•œ κΈ€μž…λ‹ˆλ‹€.

질문


μ•½κ°„..λ³€ν˜•μœΌλ‘œ..


κ²°κ³ΌλŠ” μœ„μ—κ²ƒμ΄λž‘.μ™„μ „ κ°™μŒ..μ΄μœ λŠ” λ‹Ήμ—°νžˆ λͺ¨λ₯΄κ² μ–΄μš”...λ‚œκ°...;;;;

λ‹΅λ³€ 1

μ–΄λ–»κ²Œ 같은 λ™μž‘μ„ ν•˜λŠ”μ§€ μ΄μœ λΌ λͺ¨λ₯΄κ² λ‹€κ³  ν–ˆμ§€.

μ΄μœ λŠ” hello worldλΌλŠ” λ¬Έμžμ—΄ a μ—­μ‹œ C++의 λ°°μ—΄κ³Ό λΉ„μŠ·ν•˜κ²Œ μ“Έ 수 있기 λ•Œλ¬Έμ΄μ•Ό. hλŠ” a[0], e λŠ” a[1]... μ΄λŸ°μ‹μœΌλ‘œ 말이야.

ν•˜μ§€λ§Œ λ°°μ—΄ μ›μ†Œμ˜ 값을 λ°”κΏ€ μˆ˜λŠ” μ—†λ‹€λŠ” 점이 C++의 λ°°μ—΄ν•˜κ³  λ‹€λ₯Έ 점이지.

λΉ„μŠ·ν•œ 것을 찾자면 C++의 λ°°μ—΄λ³΄λ‹€λŠ” C++의 string 클래슀, Java의 String ν΄λž˜μŠ€μ™€ λΉ„μŠ·ν•˜λ‹€λŠ” 점을 μ•Œ 수 μžˆμ–΄. -- Leonardong

λ‹΅λ³€ 2

python의 for statement λ¬Έλ²•μ˜ 근원적인 μ°¨μ›μœΌλ‘œ μ ‘κ·Όν•΄ λ΄…μ‹œλ‹€.

python은 λ‹€λ¦…λ‹ˆλ‹€.
~cpp 
for i in 'helloworld':print i,
for i in [ 'h','e','l','l','o','w','o','r','l','d']:print i,
질문과 같은 λ§₯락의 이 λ‘λ™μž‘μ΄ 같은지 λ”°μ Έ λ³ΌκΉŒμš”?

μš°μ„  for 문의 μ •μ˜λΌ μ•Œμ•„ λ΄…μ‹œλ‹€.
~cpp 
for statement definition

for_stmt  ::=  "for" target_list "in" expression_list ":" suite 
    ["else" ":" suite] 
---
μ•Œμ•„λ¨Ήκ²Œ μ μ–΄λ³΄μžλ©΄, 

for νƒ€κ²Ÿκ°μ²΄λ¦¬μŠ€νŠΈ(target) in μ‹œν€€μŠ€ν˜•(expression_list==sequence):
    식(expression)
in λ‹€μŒμ— 와야할 문은 μ‹œν€€μŠ€ν˜• μž…λ‹ˆλ‹€.
μ‹œν€€μŠ€μ˜ μ •μ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
{{|
Sequences
These represent finite ordered sets indexed by non-negative numbers. The built-in function len() returns the number of items of a sequence. When the length of a sequence is n, the index set contains the numbers 0, 1, ..., n-1. Item i of sequence a is selected by ai.
...

μΉœμ ˆν•œ 해석 :)

μ‹œν€€μŠ€
μŒμˆ˜κ°€ μ•„λ‹Œμˆ˜λ‘œ μ œν•œλ˜μ–΄ 있으며 μˆœμ„œκ°€ 맀겨진 집합. λ‚΄μž₯ν•¨μˆ˜μΈ len()λŠ” μ‹œν€€μŠ€μ˜ μ•„μ΄ν…œ κ°μˆ˜λΌ λ°˜ν™˜ν•œλ‹€. μ‹œν€€μŠ€μ˜ 길이라 n이면, μΈλ±μŠ€λŠ” 0..n-1 κΉŒμ§€μ˜ λ²”μœ„λΌ κ°€μ§„λ‹€. μ‹œν€€μŠ€μ˜ μ•„μ΄ν…œ iλŠ” ai둜 μ„ νƒλœλ‹€.

... μŠ¬λΌμ΄μ‹± κ΄€λ ¨ μ •μ˜...ν›„λž΅
|}}
λ‚΄μž₯ν˜•μ˜ μ‹œν€€μŠ€λŠ” 2.3 κΈ°μ€μœΌλ‘œ μ—¬μ„가지가 λΈλ¦¬ μ •μ˜ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
{{|There are six sequence types: strings, Unicode strings, lists, tuples, buffers, and xrange objects|}}
λ‚΄μž₯ν˜•μΈ strings 도 μ‹œν€€μŠ€ ν˜•μ΄λ©°, a[i] ν˜•νƒœλ‘œ μ ‘κ·Όν• μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ,

for i in 'helloworld': print i,
μ—μ„œ iλŠ” 반볡적으둜 'h','e'... 을 λ°˜ν™˜ν•˜λ©°

μœ„μ— κΈ°μˆ λœλŒ€λ‘œ listν˜• μ—­μ‹œ μ‹œν€€μŠ€ ν˜•μ΄λ©°, a[i] ν˜•νƒœλ‘œ μ ‘κ·Όν• μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
for i in [ 'h','e','l','l','o','w','o','r','l','d']:print i,
도 μ—­μ‹œ iκ°€ 'h','e'.. λΌ λ°˜λ³΅ν•˜κ²Œ λ©λ‹ˆλ‹€.

μ—¬κΈ°κΉŒμ§€ μ•Œμ•„ λ³΄μ‹œλ €λ©΄, Python Language Referenceμ—μ„œ sequence, for statement둜 μ—΄μ‹¬νžˆ μ°Ύμ•„ λ³΄μ‹œλ©΄ λ©λ‹ˆλ‹€. μ—΄ν˜ˆκ°•μ˜ νŒŒμ΄μ¬μ—λ„ 잘 λ‚˜μ™€μžˆμŠ΅λ‹ˆλ‹€. 그리고 λ‹€μŒμ˜ 이야기듀은 λ‹€λ₯Έ μ–Έμ–΄λΌ μ€ μ•„μ‹œλ©΄ 이해가싀 κ²λ‹ˆλ‹€.


C / Java 1.4 μ΄ν•˜λ²„μ „ 의 for μ œμ–΄λ¬Έμ€ 객체의 νŠΉμ„±μ„ 따라 λ™μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 μ–Έμ–΄λ“€μ—μ„œ for문은 정해진 쑰건문을 κ²€μ‚¬ν•˜λ©΄μ„œ, νƒˆμΆœν•©λ‹ˆλ‹€. 즉, while문을 μ‚¬λžŒμ΄ 읽기 μ‰½κ²Œ μ•½κ°„ κ³ μ°¨μ›μœΌλ‘œ μΆ”μƒν™”λœ ν˜•νƒœμ— λΆˆκ³Όν•©λ‹ˆλ‹€.

C/Java1.4μ΄ν•˜ 와 Python의 for문에 λŒ€ν•œ 관점이 μ „ν˜€ λ‹€λ¦…λ‹ˆλ‹€. 그리고 μœ μš©ν•˜μ§€μš”. C의 forλ¬Έκ³Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•˜μ—¬ python의 μ΄λŸ¬ν•œ for문을 보톡 for each 문이라고 λΆ€λ¦…λ‹ˆλ‹€. 이게 μ§„μ§œ forλ¬Έ 이라고 이야기듀 ν•˜μ§€μš”.

μ™œ C++에 μ•ˆλ˜λŠλƒλ©΄, C++의 μ œμ–΄λ¬Έμ΄ C문법에 μ’…μ†λ˜μ–΄ 있고, Cμ—μ„œλŠ” λ°°μ—΄κ³Ό 같이 μ£Όμ†ŒλΌ ν†΅ν•œ 인덱슀둜 μ ‘κ·Όν•˜λŠ” ν˜•λ“€μ΄ μ’…λ£Œ μΈλ±μŠ€μ— λŒ€ν•œ 정보가 μ—†μ–΄μ„œ κ΅¬ν˜„μ΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. 좔상화 μ‹œμΌœ C++μ—μ„œλŠ” STL에 for_each(..) λΌλŠ” ν•¨μˆ˜λ‘œ λΉ„μŠ·ν•œ 것이 κ΅¬ν˜„λ˜μ–΄ μžˆκΈ°λŠ” ν•©λ‹ˆλ‹€.

Java 1.5 에 advanced for statement λΌλŠ” μ΄λ¦„μœΌλ‘œ λΉ„μŠ·ν•œ 것이 μΆ”κ°€λ˜μ—ˆκ³ , C#μ—λŠ” μ–Έμ–΄κ°€ 탄생 λ λ•Œ λΆ€ν„° μžˆμ—ˆμŠ΅λ‹ˆλ‹€. Java 1.5μ—μ„œλŠ” μˆ˜λ…„κ°„ λ…Όμ˜ 끝에 λ„μž…μ„ ν–ˆλŠ”λ°, 언어에 녹이기 μœ„ν•΄μ„œλŠ” Autoboxing/Unboxingκ³Ό νŽΈλ¦¬μ„±μ„ μœ„ν•΄ Templateκ³Ό 같은 μ—¬λŸ¬ ν•„μˆ˜λΆˆκ°€κ²°ν•˜κ³  λ³΅μž‘λ‹€λ‚œ(?)ν•œ κ°œλ…μ΄ ν•¨κ»˜ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ref : Python Lib ref, Python Language ref, μ—΄κ°•νŒŒμ΄μ¬
--NeoCoin


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:08
Processing time 0.0231 sec