ch04. 반복문

728x90

ch04. 반복문

cf. [기본 자료형] = 어떤 하나의 값을 저장할 수 있는 자료형 (문자열, 숫자, )

리스트 = 여러 개의 값을 인덱스를 기반으로 저장할 수 있는 자료형

딕셔너리 = 여러 개의 값을 키를 기반으로 저장할 수 있는 자료형

04-1. 리스트와 반복문

[리스트 선언, 생성]

-리스트 생성 방법 : 대괄호[]에 요소를 쉽표로 구분해서 입력

-리스트 내부에 여러 종류의 자료형 구성 O

 

[리스트 내부 요소 접근]

-리스트 이름.[ ] : 리스트 이름 뒤에 대괄호로 인덱스 위치 지정하여 접근

-리스트 이름.[ : ] : 접근할 인덱스 범위 선택하여 접근 가능

 

1) 대괄호 안에 음수 넣으면 리스트 뒤에서부터 요소 접근 O

ex) list [-1] : 맨 뒤에 있는 요소에 접근

 

2) 리스트 접근 연산자 이중 사용 O

ex) list[3][0]

: list[3]의 요소 꺼내와서// list[3]이라는 new 리스트 내부에 다시 [0] 위치 요소에 접근

 

<리스트에서의 IndexError 예외> : 리스트 길이를 넘는 인덱스 요소로 접근 시도할 때 발생하는 예외

 

[리스트 연산자 : 연결, 반복, len() ]

-문자열에 적용 연산자는 리스트에도 활용됨

 

-<문자열 연결 연산자 : + > : 리스트들을 연결

 

-<문자열 반복 연산자 : * > : 리스트들을 반복하여 연결

 

-< len() 함수 > : 리스트 내부 요소 길이 반환

 

 

 

 

 

 

 

 

 

 

[리스트에 요소 추가]

 

1) 리스트에 요소 하나 추가하기

(1) 리스트 뒤에 요소 추가 -> append() 함수 활용

 

리스트명.append(요소)

 

(2) 리스트 중간에 요소 추가 -> insert() 함수 활용

 

리스트명.insert(위치, 요소)

 

2) 리스트 뒤에 새로운 리스트의 여러 요소 모두 추가

 

리스트의 뒤에 여러 요소 한 꺼번에 추가 -> extend() 함수 활용

 

리스트명.extend(리스트)

 

<리스트 연결 연산자 VS 요소 추가>

리스트 연결 연산자 + : 연산의 결과는 바꾸되,

기존 리스트의 원본에는 어떠한 영향 X (비파괴적)

요소 추가 extend() : 기존 리스트의 원본에 직접 영향 O (파괴적)

 

 

[리스트에 요소 제거]

-리스트 원본에 직접 영향을 미쳐서 제거하는 파괴적 제거O

 

1) 인덱스로 제거

-리스트의 특정 인덱스 기반으로 요소를 제거

(1) del 키워드

del 리스트명[인덱스] //해당 인덱스의 요소 제거

del 리스트명[ : ] //해당 인덱스 범위의 요소들 제거

 

(2) pop() 함수 : 리스트명.pop(인덱스)

-기본적으로 매개변수 입력안할 시, 마지막 요소를 제거함

 

2) 값으로 제거

-값을 지정해서 제거

(1) remove() 함수 사용 : 리스트.remove()

-지정한 값이 리스트 내부에 여러 개 있어도 가장 처음 발견한 값 하나만 제거O

 

3) 모두 제거 : 리스트.clear()

 

[리스트 내부의 특정 값 존재 여부 확인]

1) 있는지 확인 : in 연산자

in 리스트 -> 포함: T / 비포함 : F

 

2) 없는지 확인 : not in 연산자

not in 리스트 -> 비포함: T / 포함: F

 

[for 반복문 : 리스트 활용]

: 반복범위 내부 돌면서 요소 하나씩 반복자에 대입되어 내부 실행함

 

<for 구문의 기본 구조>

for 반복자 in 반복범위:

코드

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

04-2. 딕셔너리와 반복문

-딕셔너리 : 키를 기반으로 여러 개의 값을 저장할 수 있는 자료형

[딕셔너리 선언,생성]

-딕셔너리 생성 방법 : 중괄호{}로 선언하여, ( ‘’:‘’ ) 형태를 쉼표로 연결하여 생성

 

변수 = { :, :...}

 

[딕셔너리 내부 요소 접근]

-딕셔너리 요소 접근 : 대괄호[]로 접근,

-딕셔너리 내부의 값에는 다양한 자료 O , 리스트와 딕셔너리도 하나의 자료이므로 값으로 O

 

<NameError> : 키를 문자열로 사용할 때는 반드시 따옴표 붙여야 함

 

[딕셔너리에 값 추가] : 새 키를 지정하여 값을 입력

 

딕셔너리[new] = new

 

[딕셔너리의 기존 값 대치] : 기존 키 지정 후 대치 값 입력

 

딕셔너리[기존 키] = new

 

[딕셔너리 요소 제거] : del 키워드 사용

 

del 딕셔너리[] -> 지정된 키의 요소 제거됨

 

<KeyError 예외> : 딕셔너리 내부에 존재하지 않는 키 접근할 경우 발생하는 예외

 

[딕셔너리 내부에 특정 키 존재 여부 확인]

존재하지 않는 키에 접근할 경우 KeyError 발생하므로

접근할 키 존재 여부 확인 후, 존재하는 경우에 한해서만 접근함

 

1) in 키워드 : if key in 딕셔너리: //해당 키가 딕셔너리 내부에 존재?

 

2) get() 함수 : 딕셔너리.get(“”)

- () 매개값의 키값 존재여부 판단 후

존재하면 해당 값 추출/ 존재하지 않으면 None 반환

 

[for 반복문 : 딕셔너리 활용]

-딕셔너리 내부 차례로 돌면서 키변수값 하나씩 빼와서 내부 실행함

 

for 키변수 in 딕셔너리 :

코드

04-3. 반복문과 while 반복문

----------------------------------------------------------------------------

[범위]

-정수의 범위를 지정하는 자료형

-range() 함수로 범위 생성 O

-range( ) 매개변수에는 반드시 정수값 입력 O ( or 결과값이 정수인 연산식)

 

range(A) // 0~(A-1) 까지의 범위 지정

range(A, B) // A~(B-1) 까지의 범위 지정

range(A,B,C)// C의 간격으로 A~(B-1) 까지 범위 지정

 

<범위 지정 가시적으로 확인> : list() 함수 사용

-range() 범위를 list로 변경하여 해당 범위를 리스트로 한 눈에 확인 O

 

ex) list(range(3)) --> [0, 1, 2]

ex) list(range ( 0, 10//2)) --> [0,1,2,3,4] ... // : 나눈 후 정수만 반환

 

<<for 반복문의 기본 사용 형태>>

 

[for 반복문 : 범위]

<기본 구조>

for i in range(범위) :

코드

 

[for 반복문 : 리스트 + 범위 조합]

-‘몇 번째 반복인지 알아낼 때사용

array = [273, 32, 103, 57, 51 ]

 

for i in range( len(array) ):

print("{}번째 반복: {}".format(i,array[i]))

 

[for 반복문 : 역반복문]

-역반복문(큰 수에서 작은 수로 반복 적용)

 

1) range() 함수 매개변수 3 사용

 

for i in range(4, 0-1, -1): // ‘-1’ 간격으로 4 ~ 0까지 범위 지정

 

cf) for I in range(0, 10+1): // ‘1’ 간격으로 0~10까지 범위 지정

 

2) reversed() 함수 사용

for i in reversed(range(5)) : // 기존 범위 뒤집어짐

 

[while 반복문]

<기본적인 형태>

while 표현식: //표현식 참인 동만만 내부 반복

코드

 

[while 반복문 : for 반복문처럼 사용]

i=0

while i<10:

print(“{}번째 반복”.format(i))

i += 1

 

[while 반복문 : 상태 기반으로 반복]

-리스트 내부에 값으로 제거하는 remove() 함수는

리스트 내부에 해당 값이 여러 개 중복되어 있어도 처음 발견한 하나의 값만 제거 가능

 

while(리스트 내부에 해당 값 있는 동안)

리스트.remove() //해당 중복값 모두 제거되고 종료됨

 

[while 반복문 : 시간 기반으로 반복]

-유닉스 타임 : 세계 표준시, 1970.01.01. 00:00 기준으로 몇 초 지났는지 정수로 나타냄

import time

 

number = 0

targetT = time.time() + 5

while time.time() < targetT :

number += 1

 

print(“5초 동안 {}번 반복”.format(number))

 

[while 반복문 : break, continue키워드]

 

-break 키워드 : 반복문 벗어날 때 사용하는 키워드

-continue 키워드 : 해당 반복 건너뛰고 다음 반복 진행하는 키워드

 

 

 

 

 

 

 

 

 

04-4. 문자열, 리스트, 딕셔너리와 관련된 기본 함수

 

[리스트에 적용 기본함수 : min(), max(), sum() ]

-리스트를 매개변수로 넣어 사용하는 함수

min(리스트) : 리스트 내부 최솟값 찾아 반환

max(리스트) : 리스트 내부 최댓값 찾아 반환

sum(리스트) : 리스트 내부값 모두 더한 값 반환

 

cf) 매개변수에 값 나열한 min(), max() 함수

min( 1,2,3... ) // 나열한 값 중 최솟값 반환

max( 1,2,3...) // 나열한 값 중 최댓값 반환

 

[리스트 뒤집기 : reversed() ]

매개변수에 리스트를 넣으면 해당 리스트 요소의 순서가 뒤집힘

reversed() 함수는 리스트를 반환X

이터레이터를 반환O ---> 바로 출력 X // list(), next() 함수 사용

 

list ( reversed (리스트) ) //뒤집힌 리스트의 이터레이터를 리스트로 변환해서 출력

next ( reversed (리스트) ) //뒤집힌 리스트의 이터레이터에 next() 사용해 하나하나 출력

 

cf) 확장 슬라이싱 [::-1] //리스트 or 문자열 내용물 뒤집기

리스트[::-1]

문자열[::-1]

 

[리스트>> enumerate() 함수 + 반복문 조합] // 반복 변수 2개 사용O

enumerate() 함수

: (인덱스, ) 쌍으로 반복문 돌릴 수 있게 해주는 함수

: 리스트를 반복문 돌리면서 현재 몇 번째 인덱스인지 확인 쉽게 O

 

for i, value in enumerate( 리스트) :

print(“{}번째 요소값은 {}”.format(i,value))

 

[딕셔너리>> items() 함수 + 반복문 조합] // 반복 변수 2개 사용O

-items() 함수

: (키와 값)을 쌍으로 사용해서 반복문 돌릴 수 있게 해주는 함수

 

for key, element in 딕셔너리.items():

print(“딕셔너리[ {} ] = {} ”.format(key, element))

 

 

 

 

 

[리스트 [] 내포]

-반복문 or 조건문을 리스트의 []대괄호 안에 넣어서 리스트 재조합 생성하는 특수 구문

 

<[] 안에 for 사용>

 

리스트이름 = [표현식 for 반복자 in 반복될 객체 ]

 

array = [ i*i for i in range(0,20,2) ] //range()범위의 요소를 I라고 할 때

(i*i 요소)를 추가하여 리스트 재조합

 

<[] 안에 if 사용>

 

리스트이름 = [표현식 for 반복자 in 반복 객체 if 조건문 ]

 

array = [fruit for fruit in array if fruit != “초콜릿”]

//array 요소를 fruit이라고 할 때, (if 초콜릿 아닌) fruit 리스트 재조합

 

 

[여러 줄 문자열 입력]

 

1) 괄호로 여러 문자열 연결

괄호 내부에 여러 개의 문자열들을 (,)쉼표 없이 입력하면 /전체 연결된 새로운 문자열 O

변수 = ( “문자열1” “문자열2” ... )

 

2) join() 함수로 연결

-매개변수에 문자열 리스트 넣으면, 이음새 문자열로 리스트의 요소들을 연결함

 

이음새문자열.join(문자열리스트)

 

ex) “\n”.join([“문자열1”, “문자열2”, “문자열3” ...]

 

------------------------------------------------------------------

[이터레이터]

for 반복자 in 반복객체

 

이터러블: 반복객체 (리스트, 딕셔너리, 문자열튜플 등)

이터레이터: 이터러블 중에서 next() 함수로 내부값 하나하나 꺼낼 수 있는 것

 

ex) next( reversed(리스트) ) //뒤집힌 리스트의 내부값이 하나하나 출력

-> 메모리 효율성을 위해 reversed() 함수는 리스트 바로 리턴 X, 이터레이터를 리턴

 

 

728x90

'Python > [문법]_Python(파이썬)' 카테고리의 다른 글

ch05. 함수  (0) 2021.09.06
ch03. 조건문  (0) 2021.09.05
ch02. 자료형  (0) 2021.09.03
ch01. 파이썬 시작  (0) 2021.08.31