Chapter 04 반복문


My Image

 

Chapter 04 반복문

1. 라스트와 반복문

리스트(list): 여러가지 자료 를 저장할수 있는 특별한 형태의 자료

Ex)

raa1=[1,2,3,4], arr2[23,'str',True]
arr1[0]->1: 여기서 element(요소)는 1이고, index(인덱스)는 0
arr2[-2]->'str':파이썬은 뒤에서부터 선택할 수 있다.
arr2[-2][1]->'t': 이중으로 사용 가능
arr3=[[1,2,3],[True,False],['aass','sinawi','python']]:
리스트 안에 리스트 사용가능
IndexError 예외 - 알고리즘 공부하다가 많이 떴던 예외.
리스트 길이를 넘는 경우에 발생함

리스트 연산자: +,*,len()

Ex)

arr1+arr2->[1,2,3,4,23,'str',True] - 연결

※ 연결연산자(+)와 exfend의 차이는

원본에 차이가 생기는지 이다. 비파괴적/파괴적

arr1 * 2 -> [1,2,3,4] - 반복
len(arr3)-> 라스트의 길이(요소의 개수),
list안에 list이지만 안에 들어있는 리스트는 요소이다.

요소추가: append , insert

Ex)

arr1(‘test’)-> arr1=[1,2,3,4,’test’] – append를 사용하면 넣으려는 element

가 가장 마지막에 추가 됨.

arr2.insert(0,False) -> arr2=[False,23,’str’,True] – 위치와 요소를 둘다

사용하여 추가

요소제거: del,pop,remove,clear

del arr1[4]->arr1=[1,2,3,4] – 인덱스에 있는 값 제거

arr2.pop을 사용하면 해당 요소가 삭제되면서 리턴. 아무것도 입력하지 않으면

가장 마지막 요소가 빠짐.

del arr1[4] -> arr1=[1,2,3,4] – 인덱스에 있는 값 제거

arr2.pop(0) -> arr2=[23,’str’,True] – pop을 사용하면 해당 요소가 삭제되면서 리턴.

아무것도 입력하지 않으면 가장 마지막 요소가 빠짐.

arr2.remove(‘str’) -> arr2=[23,True] – 해당값을 앞에서부터 찾아서 제거

arr2.clear() -> arr2=[] – 리스트 요소 모두 제거

리스트 내부에 있는지 확인: in / not in

4 in arr1 -> True – arr1=[1,2,3,4]

1 in arr2 -> False – arr2=[]

not in 은 in 과 반대로 사용 -> 없는지 확인

for 반복문: 반복작업에 쓰임

for 반복자 in 반복할수 있는 것:

코드

ex)

for i in range(100):
   print("hi")
-> hi가 100번 출력됨

for i in arr1: # arr1=[1, 2, 3, 4]

  print(i)

->1

2

3

4

-> 요소 하나씩 출력됨

2. 딕셔너리와 반복문

Dictionary(딕셔너리): key(키)를 기반으로 저장하는 것,

리스트와 다르게 중괄호를 사용해서 선언

변수 = { key1: value1, key2:value2 ….}

ex)

dict_a={ “key1”:10, “key2”:20, 1:30, False:40 }

요소 접근

dict_a -> { "key1":10, "key2":"Python", 1:30, False:40,"list":[1,2,3] } #전체 출력

dict_a[key2]->"Python" #하나만 출력

값 추가/수정/제거

dict_a["key0"]=0 -> dict_a = { "key1":10, "key2":"Python", 1:30, False:40,"list":[1,2,3], "key0":0 } 
dict_a["key0"]=10 -> dict_a = { "key1":10, "key2":"Python", 1:30, False:40,"list":[1,2,3], "key0":10 } 
del dict_a["key0"] -> dict_a = { "key1":10, "key2":"Python", 1:30, False:40,"list":[1,2,3] }

딕셔너리 내부에 키 있는지 확인

in 키워드: 이전에 포스팅 했던 것처럼 in을 사용하여 조건식으로 사용

get() 함수:존재하지 않는 key인경우 None을 출력.

numbers = [1, 2, 6, 8, 4, 3, 2, 1, 9, 5, 4, 9, 7, 2, 1, 3, 5, 4, 8, 9, 7, 2, 3]
counter = {}

for number in numbers:
if number in counter:
counter[number] += 1
else:
counter[number] = 1

print(counter)
PS D:\■■■■■_fFF\■\p■t■o■> & C:/■■■■■/s■■m■/■■■■■■■/■■■■■/■■■■■/Python/■■■■■■■/python.exe d:/■■■■■■_file/■/python/■■■2.py
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
PS D:\■■■■■_fFF\■\■■th■n>

↑결과

character={
"mame": "knight",
"level": 12,
"items" : {
"sword" : "Sword of fire",
"armor" : "Full plate"
},
"skills":["sting", "cut", "Swing"]}

for key in character :
value = type(character[key])
if value is list:
for i in (character[key]):
print("{} : {}".format(key,i))
elif value is dict:
for i in character[key]:
print("{} : {}".format(i,character[key][i]))
else:
print("{} : {}".format(key,character[key]))

↑연습문제 4(死)

PS D:\■■■■■_fFFF\s\■y■■on> & C:/■■■/■■■■/■■■■a/■■■■■■/P■■■■a■■/P■■h■■/Python39/python.exe d:/■■■■■_fFF■/s/python/■■■3.py
name : knight
level : 12
sword : Sword of fire
armor : Full plate
skills : sting
skills : cut
skills : Swing
PS D:\■■■■■_fFFF\s\■y■■on>

4번 결과

3. 반복문과 while 반복문

range(10) -> 0부터 9까지

range(2,10) -> 2부터 9까지

range(0,10,3) -> 0부터 9까지 3의 간격

range(4,0-1,-1) -> 4부터 0까지 -1간격, for 반복문에서 역순으로쓸때 사용,

0-1은 0까지 카운트하겠다는 강조.

while 반복문

while (조건):

문장
Ex)
loop 34673579 times in 5 secs
PS D:\■■■■■_fFFF\s\■y■■on>

break, continue 키워드: 아는거니 패스

key_list=["name", "hp", "mp", "level"]
value_list=["knight", 200, 30, 5]
character={}

for num in range(len(key_list)):
character[key_list[num]]=value_list[num]

print(character)
{'name': 'knight', 'hp': 200, 'mp': 30, 'level': 5}
PS D:\■■■■■_fFFF\s\■y■■on>
limit = 10000
i = 1
sum_value=0

while sum_value<limit:
sum_value+=i
i+=1
i-=1
print("When add {}, sum_value is {} over {}".format(i,sum_value,limit))
When add 141, sum_value is 10011 over 10000
PS D:\■■■■■_fFFF\s\■y■■on>

책에 오류가 있는데 142를더할때 값은 10153이 된다.

10000이 넘는 값은 141을 더할때이다.

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

min,max,sum

reversed->확장슬라이싱으로 사용가능 ex) list[::-1]

enumerate -> 리스트에서 사용

※ 이터레이터와 튜플

items -> 딕셔너리에서 사용

리스트 내포: 리스트명 = [

표현식 for 반복자 in 반복할수있는것 (if 조건문)

]

ex) array=[i*i for i in range(0,20,2)]

※ 좀더 알아보기(수정할 곳)

1. 구문내부에 여러줄의 문자열을 사용했을때 문제점

2. 이터레이터