javascript로 개발 공부를 하고, python을 배우게 되면서
가장 자주 사용하는 for문에 대해 좀 더 깊게 이해하게 되었다.
반복문이란 정말 아름다운 것이다!
1. Javascript
먼저 javascript에서 쓰이는 for문은 다음과 같다.
- for
- for...in
- for...of
- forEach() - (Array 메소드)
- while
- do...while
for
js에서 가장 일반적인 for문의 형태는 다음과 같다.
for(let i = 0; i<10; i++){
console.log(i);
}
여기서
let i = 0 : 변수 let i를 선언하고 초기값으로 0을 할당
i < 10 : 반복문을 실행할 조건(i가 10보다 작으면 계속 실행)
i++ : 1번 순회할 때마다 i에 1을 추가한다는 증감식
위 코드를 실행하면 0, 1, 2, 3, ...., 9까지 출력하고 코드가 종료될 것이다.
for ...in
for in 문은 object에 사용할 수 있는 반복문이다.(배열에도 사용할 수는 있지만, 배열에는 for or 문을 더 많이 사용한다.)
const obj = {
name : '책다니엘',
age : '나이'
}
for(const key in obj){
console.log(key); // key값 출력
console.log(obj.name, obj.age); // value 값 출력
console.log(`key 값 : ${key}`); // key값 : 이름 // key값 :age
console.log(`value 값 : ${obj[key]}`); // value 값 : 이름 // value값 : 나이
}
파이썬의 for문과 비슷한데(for mark in marks 등으로 나타나는 그것), 파이썬에서는 배열 내에서 순회를 돌릴 때 for in문을 사용하지만, js에서는 object 객체를 순회하는 데 사용한다.
ex) obj.name은 obj라는 object 내에 name이라는 key를 호출하는 것이다. 해당하는 key가 없을 경우 undefined가 출력된다.
객체의 모든 value값을 얻으려면 obj[key]로 객체를 순회하여 얻을 수 있다.
for ... of
파이썬의 for ... in 문과 거의 비슷한 바로 그것이다. for of문은 반복 가능한 객체(Array, Map, Set, String, TypedArray, arguments 객체 등 포함)에 대해 사용할 수 있다. 보통 Array에 사용한다.
const arr = ['A', 'B', 'C'];
for(const element of arr) {
console.log(element); // 배열[0] ~ 끝까지 순차 출력
console.log(arr); // 배열 전체 출력
}
forEach()
배열에 사용되는 메서드이다. 인자에 콜백함수를 넣어 사용한다.
const arr = ['A', 'B', 'C'];
arr.forEach((element)=>{
console.log(element);
})
while
조건이 거짓이 될 때까지 실행되는 반복문이다.
while(boolean) {
// boolean이 참이면 실행
}
while의 ()안의 조건이 true면 실행, false면 실행되지 않는다.
boolean이 true인데 탈출 조건이 없을 경우 무한 루프, false일 경우 단 한 번도 실행되지 않는다.
do...while
while문과는 달리, do{}에 작성된 코드는 최소 1번은 무조건 실행된다.
do를 먼저 실행하고 그 다음에 while문의 조건을 본다.(사실 코드의 진행 상 당연한 거긴 하다)
do {
// ...
}while(condition)
2. Python
python의 경우, 먼저 for문의 기본 구조는 다음과 같다.
for 변수 in 리스트(또는 튜플, 문자열):
수행할_문장1
수행할_문장2
...
// 예제 코드
>>> test_list = ['one', 'two', 'three']
>>> for i in test_list:
... print(i)
...
one
two
three
리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 ‘수행할_문장1’, ‘수행할_문장2’ 등이 수행된다.
['one', 'two', 'three'] 리스트의 첫 번째 요소인 'one'이 먼저 i 변수에 대입된 후 print(i) 문장을 수행한다. 다음에 두 번째 요소 'two'가 i 변수에 대입된 후 print(i) 문장을 수행하고 리스트의 마지막 요소까지 이것을 반복한다.
for + 변수 + in + (리스트, 튜플, 문자열, 배열) 의 구조, 그리고 배열의 첫 번째 요소부터 마지막 요소까지 순회한다는 점에서 자바스크립트의 for + of 구문과 매우 비슷하다는 것을 알 수 있을 것이다.
그렇다면 파이썬 기초에서 항상 배우는 for i in range(10) 등에서 range(10)은 무엇인가?
파이썬의 range(10) 메소드는 0 이상 10 미만의 정수로 구성된 range 객체를 만들어주는 메소드이다.
즉 range(10)을 선언하면 [0,1,2,3,4,5,6,7,8,9]라는 무명 배열이 하나 선언되는 것이다!
** 리스트 컴프리헨션의 내용을 추가한다.
리스트 컴프리헨션을 통해 for문과 if문 등을 보다 간단하게 줄여 표시할 수 있다.
[표현식 for 항목 in 반복_가능_객체 if 조건문]
리스트 컴프리헨션은 조금 복잡하지만 다중 반복문도 가능하다. 이 때 표현식은 다음과 같다.
[표현식 for 항목1 in 반복_가능_객체1 if 조건문1 for 항목2 in 반복_가능_객체2 if 조건문2 ... for 항목n in 반복_가능_객체n if 조건문n]
예를 들어, 다음 코드가 있을 수 있다.
>>> a = [1,2,3,4]
>>> result = []
>>> for num in a:
... result.append(num*3)
...
>>> print(result)
[3, 6, 9, 12]
// 자바스크립트로는 다음과 같다
let a = [1, 2, 3, 4];
let result = [];
for(let i of a){
result.push(i * 3);
}
console.log(result)
// [3, 6, 9, 12]
이를 리스트 컴프리헨션으로 표현하면 다음과 같다.
>>> a = [1,2,3,4]
>>> result = [num * 3 for num in a]
>>> print(result)
[3, 6, 9, 12]
자바스크립트에는 리스트 컴프리헨션이 없다. 적어도 내가 알기로는 그렇다!
'파이썬 공부중 > 파이썬 기초' 카테고리의 다른 글
| 파이썬 기초 정리 02 (0) | 2024.02.04 |
|---|---|
| 파이썬 기초 정리 01 (1) | 2024.02.03 |
| Python 기초 #9. 표준입출력, 파일입출력, Pickle, with, 연습문제 (0) | 2023.03.08 |
| Python 기초 #8. 연습문제 (2) | 2023.03.08 |
| Python 기초 #7. 전달값과 반환값, 기본값, 지역변수와 전역변수 (0) | 2023.03.08 |