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, 이터레이터를 리턴
'Python > [문법]_Python(파이썬)' 카테고리의 다른 글
ch05. 함수 (0) | 2021.09.06 |
---|---|
ch03. 조건문 (0) | 2021.09.05 |
ch02. 자료형 (0) | 2021.09.03 |
ch01. 파이썬 시작 (0) | 2021.08.31 |