for 문은 시퀀스 객체가 주어졌을 때 그 값을 순환하며 조건에 맞는 값을 '한' 바퀴 돈다.
for i in range(10):
print(i)
-------------
0
1
2
3
...
이런 식으로 range(10) 안의 9개 요소만큼 반복한다. 개수가 중요!
hello, world! 를 100번 할 때 복붙을 안하고 for문을 사용하면 2줄에 끝난다.
for i in range(100):
print('hello world!')
위와 같이 i는 안써도 되고 in 뒤에 오는 시퀀스 객체가 중요하다. 만약 range가 아니라 100만 왔다면 1번 반복하고 끝.
값을 역순으로 정렬해준다. 허나 reversed는 range와 같은 객체단위가 아니라서
for i in reversed(range(10): 에서 같이 in 뒤에 쓰거나
그 자체로 사용하려면 다시 리스트나 다른 것으로 묶어야한다.
그래서 일반적인 배열에서는 .reverse()를 쓰는 것이 좋다.
while은 참 거짓을 기준으로 반복을 돌린다
대개 i < 10 과 같이 비교문을 사용한다.
코드내에서 i-=1처럼 값을 조정해주는 경우에 자주 사용!
append()
extend()
insert()
insert(0, 요소)
insert(len(리스트), 요소) == 리스트.append(요소)
추가적으로 append와 insert에서 리스트를 넣으면 2차원 배열 처럼 요소가 리스트가 된다.
pop은 마지막 값(len((arr)-1)을 리스트에서 삭제
하지만 기본 값이 마지막 값인데 인덱스요소를 설정하면 특정요소 삭제 가능
del하고 다른 점은 삭제 값을 출력해줌.
remove는 특정 값 삭제.
a = [10, 20, 30, 20]
a.remove(20)
a
-------
[10, 30, 20]
특정값이 두 개 있는 경우가 있는데 이때 앞에 있는 값을 먼저 삭제.
자료구조의 원리!
프링글스 과자를 생각하면 된다.
먼저 넣은 요소가 가장 마지막에 꺼내져 나오고,
마지막에 넣은 요소가 가장 처음으로 나온다.
append하면 맨 뒤에 추가하고 pop하면 맨 뒤의 값을 가져오는 특징.
넣는 요소가 마지막에 오는 것은 맞지만,
스택과 반대로 첫번째부터(0번인덱스-pop(0)) 끄집어 낸다.
나머지 추가 자료!