목차:
04_1) 리스트와 반복문
04_2) 딕셔너리와 반복문
04_3) 반복문과 while 반복문
04_4) 문자열, 리스트, 딕셔너리와 관련된 기본 함수
04_1) 리스트와 반복문
- 리스트를 선언하고 요소에 접근하기
- 리스트 연산자: 연결(+), 반복(*), len()
- 리스트에 요소 추가, 제거하기
- 리스트 내부에 있는지 확인하기: in / not in 연산자
- for 반복문
▶리스트를 선언하고 요소에 접근하기
리스트(list) : 여러가지 자료들을 저장할 수 있는 자료.
주의) 1) 대괄호[]로 선언해주고
2) 대괄호 안에 문자열은 " " 써서 작성, 숫자및 불 은 바로 작성함
3) 리스트의 순서를 문자열 때 처럼 1이아니라 0부터 카운트한다
요소 : 대괄호 내부에 넣는 자료 (문자, 숫자, 불 모두 지칭)
인덱스 : 대괄호 안에 들어간 숫자 (숫자만 지칭)
list_a=list() # list()를 사용해서 리스트를 만듬, 그러나 비어있는 리스트를 의미함.
# 공부하다 보면 () 안에 변수들이 들어감으로 변수들이 할당받은 값을
# 리스트(list)형식으로 만들어줌.
array=[273, 12, "문자열", True, 55 ]
print(array)
[273, 12, '문자열', True ]
print(array[0])
273
print(array[1:3])
[12,'문자열']
print(array[-1]) #대괄호 안에 음수를 넣어 뒤에서부터 요소를 선택할수 있음
55
print(array[5])
오류발생
print(array[2])
문자열
print(array[2][1]) #리스트 접근 연산자를 이중으로 사용가능
자
new_array=[[1,2,3],[4,5,6],[7,8,9]] #리스트 안에 리스트를 사용할 수 있음
print(new_array[1])
[4,5,6]
print(new_array[1][1])
5
change_array=[44,"변경","문자열",14] # 리스트의 특정 요소 변경 가능
change_array[1]=90 # 90양옆에 "" 없기때문에 정수로 인식
print(change_array) # ("90"이면 90을 문자열로 인식)
[44, '90', '문자열', 14]
▶리스트 연산자: 연결(+), 반복(*), len()
연결(+) : 말 그대로 두개의 리스트를 붙여줌
반복(*) : 말 그대로 리스트를 n번 반복해줌
len() : 괄호 내부에 리스트 변수를 넣으면 요소의 개수를 세어 줌
: 괄호 내부에 문자열을 넣으면 문자열의 글자 수(=길이)세어 줌
주의) 숫자로 입력받은 int, float 형식에서는 str로 자료형 변환 해주어야 함
list_A=[1,2,3]
list_B=[4,5,6]
print(list_A+list_B)
[1, 2, 3, 4, 5, 6]
print(list_A*3)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
print(len(list_A))
3
number=1454
print(len(number))
오류 발생
number=1454
print(len(str(number))) # str을 사용하여 형 변환을 하거나.
4
number="1454" # 애초부터 문자열로 입력을 해버린다
print(len(number))
4
▶리스트에 요소 추가, 제거하기
추가하는 방법 : 1) apped() 함수 : 리스트 뒤쪽에 요소를 추가
2) insert() 함수 : 리스트의 중간에 요소 추가
3) extend() 함수 : 한 번에 여러요소를 추가하고 싶을 때
(원래 리스트 뒤에 새로운 리스트의 요소를 추가 해줌)
주의) 위 3가지 방식 모두 기존의 변수의 값이 파괴되고 새로운 값으로
재설정 되는 '파괴적' 인 함수임.
list_A=[1,2,3]
list_B=[4,5,6]
list_A.append(6) # list_A의 맨뒤에 6을 추가함
print(list_A)
[1, 2, 3, 6]
list_B.insert(1,9) # list_B의 1번 위치에 9를 삽입함
print(list_B)
[4, 9, 5, 6] # 나머지 요소들은 뒤로 밀려남
list_B.extend([1,"a",9]) # 기존의 list_B에서 새로운 리스트의 요소가 추가가 됨
print(list_B)
[4, 5, 6, 1, 'a', 9]
제거하는 방법 : 1) 인덱스로 제거하기
- syntax) del 리스트명[인덱스]
: 리스트의 특정 인덱스에 있는 요소를 제거함.
- syntax) 리스트명.pop(인덱스)
: del과 같은데, 매개변수를 입력하지 않으면 마지막 요소를 제거함.
2) 값으로 제거하기
- syntax) 리스트명.remove(값)
: 말 그래도 값을 지정해서 제거함
주의) remove(값)을 한다고 리스트 안에 있는 해당하는 모든 값이 사라지는 것이 아니라
앞쪽에 하나만 제거가 된다 (만약 여러개의 값을 제거하려면 반복문 사용)
- syntax) 리스트명.clear()
: 리스트 내부의 요소를 모두 제거 함
#---------------인덱스로 제거하기-------------#
list_a=[7,2,5,4,9,6]
list_b=[7,2,5,4,9,6]
list_c=[7,2,5,4,9,6]
list_d=[7,2,5,4,9,6,1,5,2]
del list_a[3]
print(list_a)
[7, 2, 5, 9, 6]
list_b.pop(2)
print(list_b)
[7, 2, 4, 9, 6]
list_c.pop()
print(list_c)
[7, 2, 5, 4, 9]
del list_d[1:3] # 앞에서 했던 문자열과 동일함
print(list_d)
[7, 4, 9, 6, 1, 5, 2]
#--------------값으로 제거하기----------------#
list_f=[1,2,1,2]
list_f.remove(2)
print(list_f)
[1,1,2]
list_g=[1,5,6,2,7,8]
list_g.clear()
print(list_g)
[]
▶리스트 내부에 있는지 확인하기: in / not in 연산자
syntax) 값 in 리스트명
-> in 연산자 : 특정 값이 리스트 내부에 있는지 확인 하는 방법
syntax) 값 not in 리스트명
-> not in 연산자 : in 연산자와 반대로 동작 함
list_a=[912, 485, 14, 61, 224]
912 in list_a
True
100 in list_a
False
912 not in list_a
False
100 in list_a
True
▶for 반복문
syntax) for 반복자 in 반복할 수 있는 것:
()()()()코드
반복할 수 있는 것 = 문자열, 리스트, 딕셔너리, 범위(range) 등
for i in range(5): # 범위(range) 사용, 5번 반복 하겠다.
print("출력")
출력
출력
출력
출력
출력
array=[1,2,3,4,5,6] # 리스트 사용, 반복자 i
for i in array: # 반복할 수 있는것(array의 요소)이 끝날때까지 반복함
print(i)
1
2
3
4
5
for char in "안녕하세요": # 반복문을 문자열에도 사용할수 있음
print(char)
안
녕
하
세
요
04_2) 딕셔너리와 반복문
-딕셔너리 선언 및 요소에 접근하기
-딕셔너리에 값 추가 / 제거 하기
-딕셔너리 내부에 키가 있는지 확인하기
-for 반복문: 딕셔너리와 함께 사용하기
▶딕셔너리 선언 및 요소에 접근하기
-> 리스트(list) 가 '인덱스 기반으로 값을 저장하는 것' 이면
딕셔너리(dictionary)는 '키를 기반으로 값을 저장하는 것'
syntax) 변수={
키 : 값,
키 : 값,
. . .
키 : 값
}
-> 키 : 딕셔너리 내부에서 값에 접근할 때 사용하는 것으로
문자열, 숫자, 불 등으로 선언 가능 ( 주로 문자열로 선언함 )
주의) 키를 문자열로 사욜할경우 따옴표 필수!
-> 값 : 딕셔너리 내부에 있는 각각의 내용을 의미
------------자료형------------ | -------------의미-------------- | --------가리키는 위치-------- | -----------선언 형식---------- |
리스트 | 인덱스를 기반으로 값을 저장 | 인덱스 | 변수=[] |
딕셔너리 | 키를 기반으로 값을 저장 | 키 | 변수={} |
-> 딕셔너리 요소에 접근할때 : 딕셔너리 뒤에 대괄호[]를 입력하고 내부에 인덱스처럼 키를 입력함
------------구분--------------- | -----------선언 형식---------- | ------------사용 예----------- | -----------틀린 예------------ |
리스트 | list_a=[] | list_a[1] | |
딕셔너리 | dict_a={} | dict_a["name"] | dict_a={"name"} <- 주의 |
#------------딕셔너리 선언-------------------#
dict_a={
"ADD" : "Seoul", # 키를 문자열로 선언
"BDD" : "Japan",
"CDD" : "China",
"Army" : ["ROKMC","ROK","AirForce"], # 값으로 리스트 사용 가능
1 : 30, # 키를 숫자로 선언
True: 50 # 키를 불로 선언
}
print(dict_a["ADD"])
Seoul
#---------딕셔너리 요소에 접근-----------#
print(dict_a["Army"])
['ROKMC','ROK','AirForce']
#-------------값을 변경함----------------#
dict_a["ADD"]= "KOREA"
print(dict_a["ADD"])
Korea
▶딕셔너리에 값 추가 / 제거 하기
- 추가하기 : 마지막 위치에 추가가 됨
syntax) 딕셔너리[새로운키]=새로운 값
-제거하기 :
syntax) del 딕셔너리[제거할 키]
#-------------- 값 추가-------------#
dict_a={
"ADD" : "korea",
"BDD" : "Japan",
"CDD" : "China"
}
dict_a["DDD"]= "USA"
print(dict_a)
{'ADD': 'korea', 'BDD': 'Japan', 'CDD': 'China', 'DDD': 'USA'}
#-------------- 값 제거--------------#
del dict_a["CDD"]
print(dict_a)
{'ADD': 'korea', 'BDD': 'Japan', 'DDD': 'USA'}
#--------------빈 딕셔너리에 요소 추가-----------#
key_list=["name","hp","mp","level"]
value_list=["기사",500,200,5]
character={}
for A in key_list:
for B in value_list:
character[A]=B # character 라는 딕셔너리에 [a라는 키와] = B 라는 값 추가
print(character)
{'name': 5, 'hp': 5, 'mp': 5, 'level': 5}
▶딕셔너리 내부에 키가 있는지 확인하기
- in키워드 : 리스트 내부에 값이 있는지 없는지 확인한것과 같이 딕셔너리에도 동일하게 사용 됨
if key in dict_a: # in 키워드 사용
print(dict_a[key])
else:
print("존재하지 않는 키입니다)
▶for 반복문: 딕셔너리와 함께 사용하기
for 문 syntax) for 반복자 in 반복할 수 있는 것:
()()()()코드
syntax) for 키 변수 in 딕셔너리:
()()()()코드
주의) 딕셔너리 내부에 있는 키가 변수에 들어감(키 변수에 딕셔너리의 키를 쓰라는것이 아님)
Tip) 그냥 동일한 것이다. // 반복자 (=변수) =키 변수 ,
반복할수 있는 것에 딕셔너리 들어감
dict_a={
"ADD" : "korea",
"BDD" : "Japan",
"CDD" : "China"
}
for goal in dict_a:
print(goal,"나라이름",dict_a[goal])
ADD 나라이름 korea
BDD 나라이름 Japan
CDD 나라이름 China
04_3) 반복문과 while 반복문
-범위(range)
-for 반복문 : 범위와 함께 사용하기
-for 반복문 : 리스트와 범위 조합하기
-for 반복문 : 반대로 반복하기
-while 반복문
-while 반복문 : break 키워드 / continue 키워드
▶범위(range)
-> 정수의 범위를 나타내는 값
- 리스트, 딕셔너리 외에 for반복문과 함께 많이 사용되는 범위 자료형임
주의) range() 함수의 매개변수는 반드시 정수만 들어갈수 있음( 정수나누기 연산자(//) 사용 ),
파이썬에서 range안에 값들은 int(정수)라고 받아 들였다는 의미이기도 함
- 매개변수가 한개인 경우
-> range(A) : 0부터 A-1 까지의 정수로 범위를 만듬
a=range(5)
print(list(a))
[0, 1, 2, 3, 4]
- 매개변수가 두개인 경우
-> range(A,B) : A부터 B-1 까지의 정수로 범위를 만듬
a=range(5,10)
print(list(a))
[5, 6, 7, 8, 9]
- 매개변수가 세개인 경우
-> range(A,B,C) : A부터 B-1까지의 정수로 범위를 만드는데, 간격이 C만큼임
a=range(5,15,2)
print(list(a))
[5, 7, 9, 11, 13]
▶for반복문 : 범위와 함께 사용하기
for 문 syntax) for 반복자 in 반복할 수 있는 것:
()()()()코드
for 문 syntax with range) for 숫자변수 in 범위:
()()()()코드
Tip) 그냥 동일한것이다. //반복자(=변수) =숫자변수 ,
반복할 수 있는것에 범위가 들어감
for i in range(0,10,3):
print(i)
0
3
6
9
▶for 반복문 : 리스트와 범위 조합하기
Tip) for문 syntax와 동일하다.
array_a=[44,21,56,78,24,89]
for i in array_a:
print(i)
44
21
56
78
24
89
for k in range(len(array_a)): # len 요소의 개수-> range로 범위 잡아줌
print(k)
0
1
2
3
4
5
▶for 반복문 : 반대로 반복하기
-range() 함수의 매개변수를 거꾸로 사용
-reversed() 함수 사용
for i in range(5,0-1,-1): #5부터 0까지 출력된다는것중
print(i) # 0까지라는 것을 강조하고싶어서 0-1 이라 표현함.
5
4
3
2
1
0
for i in reversed(range(4)): # 0 ,1 ,2, 3 을 출력하고 이것을 뒤집어서 3,2,1,0 이 됨
print(i)
3
2
1
0
▶while 반복문
syntax) while 불 표현식:
()()()()문장
-> 불 표현식이 참인 동안 계속 while 반복문이 돌아가게 됨. (불 표현식= 참 거짓을 표현하는 식)
거짓이 되는순간 while문 끝남.
Tip) for 문 VS while문
-------------------------2개의 반복문--------------------------- | -----------------------------차이--------------------------------- |
for문 | 특정 횟수만큼 반복하는 경우 (즉, 리스트, 딕셔너리 등 내부의 요소를 순회하는 경우) |
while문 | 불 표현식이 참인 동안 계속 반복함 (조건 활용) |
i=0
while i<10:
print(i)
i+=1 # i=i+1
0
1
2
3
4
5
6
7
8
9
->무한 반복문
syntax) while True:
()()()()문장
Tip) 사용하는 경우 : 내부의 코드를 돌고나서 큰틀의 프로그램이 자동으로 다시 돌아야 하는경우.
▶while 반복문 : break 키워드 / continue 키워드
주의) 반복문 내부에서만 사용할수 있는 break, continue 키워드
-> break 키워드 : 사용시 while문을 깨버리고 탈줄함 ( 어떤 while 문을 깨는지 명확히 숙지 )
Tip) 일반적인 사용은 무한 반복문을 만들고, 내부의 반복을 벗어날때 많이 사용함
while True:
i=int(input("1,2,3중에 숫자를 입력하세요."))
while i==1:
print("입력받은 숫자는 1입니다.")
break # break 는 while i==1: 을 깬 후 while True: 로 감
while i==2:
print("입력 받은 숫자는 2입니다.")
break # break 는 while i==2: 을 깬 후 while True: 로 감
if i==3:
print("프로그램을 종료 합니다")
break # break 는 while True: 을 깬 후 프로그램 종료시킴
-> continue 키워드 : 현재 반복을 생략하고 다음 반복으로 넘어갈 때 사용하는 키워드
num=[1,5,4,9,2,7,8,4,9]
for a in num:
if a<5:
continue # 1 이 들어오지만 countine 때문에 print(1)을 하지못하고
print(a) # 다시 for문으로 올라가서 5가 들어감
5
9
7
8
9
04_4) 문자열, 리스트, 딕셔너리와 관련된 기본 함수
- 리스트에 적용할 수 있는 기본함수: min(), max(), sum()
-reversed() 함수로 리스트 뒤집기
-enumerate() 함수와 반복문 조합하기
-딕셔너리의 items()함수와 반복문 조합하기
-리스트 내포
▶ 리스트에 적용할 수 있는 기본함수: min(), max(), sum()
-------------------------------함수------------------------------- | -------------------------------설명------------------------------- |
min() | 리스트 내부에서 최솟값을 찾음 |
max() | 리스트 내부에서 최댓값을 찾음 |
sum() | 리스트 내부에서 값을 모두 더함 |
numbers=[124,156,325,789,234,567]
a=min(numbers)
print(a)
124
b=sum(numbers)
print(b)
2195
▶reversed() 함수로 리스트 뒤집기
list_a=[1,2,3,4,5]
list_reversed=reversed(list_a)
print(list_reversed) # 이터레이터임 으로 주소값이 출력됨
<list_reverseiterator object at 0x00000224D3AED300>
print(list(list_reversed))
[5, 4, 3, 2, 1]
▶enumerate() 함수와 반복문 조합하기
->리스트의 요소를 반복할 때 현재 인덱스가 몇번인지 확인해야 할때 유용함
list_a=["요소1","요소2","요소3"]
print(list(enumerate(list_a)))
[(0, '요소1'), (1, '요소2'), (2, '요소3')]
for i,value in enumerate(list_a): #enumerate() 함수를 쓰면 반복 변수를 왼쪽과 같은 형태로 저장가능
print("{},{}".format(i,value))
0,요소1
1,요소2
2,요소3
▶딕셔너리의 items()함수와 반복문 조합하기
주의) 딕셔너리에서 사용하는 함수다.
dictionary_a={
"key_a": "value_a",
"key_b": "value_b",
"key_c": "value_c",
}
print(dictionary_a.items())
dict_items([('key_a', 'value_a'), ('key_b', 'value_b'), ('key_c', 'value_c')]) # 출력 결과
for key, value_A in dictionary_a.items():
print("{},{}".format(key, value_A))
key_a,value_a # 출력 결과
key_b,value_b
key_c,value_c
▶리스트 내포
-> 리스트 내부에 표현식을 내포 하는것임
syntax) 리스트 이름[ 표현식 for 반복자 in 반복할 수 있는 것]
syntax) 리스트 이름[ 표현식 for 반복자 in 반복할 수 있는 것 if 조건문]
Tip) 반복자= 변수
표현식= 리스트에 저장하고 싶을때 어떻게(어떤 표현으로)해서 저장할 것 인가
# syntax) 리스트 이름[ 표현식 for 반복자 in 반복할 수 있는 것]
array =[i*i for i in range(0,20,2)]
print(array)
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
#--------위와 같은 식을 알지 못한다면 아래와 같이 해야한다------------#
array=[] # 빈 리스트 선언
for i in range(0,20,2):
array.append(i*i)
print(array)
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
# syntax) 리스트 이름[ 표현식 for 반복자 in 반복할 수 있는 것 if 조건문]
array=["사과","배","바나나","귤","사탕"]
output=[i for i in array if i !="사탕"]
print(output)
['사과', '배', '바나나', '귤']
# line4 설명
# array에서 i(반복자)를 돌리면서 사탕이 아닐때 i(표현식)라는 요소를 저장함과 동시에 output(리스트)
# 가 만들어 진다
'프로그래밍 > 파이썬' 카테고리의 다른 글
06강 ) 예외 처리 (0) | 2022.01.25 |
---|---|
05강) 함수 (0) | 2022.01.21 |
파이썬) 라이브러리 업뎃중 (0) | 2022.01.17 |
03강) 조건문 (0) | 2022.01.12 |
02강) 자료형 (0) | 2022.01.11 |