boot camp(설날특집)

HIROYOSHI·2022년 2월 1일
0

2022/02/02 study record

코딩도장 python unit 17~ 23.1

while문

while문은 for문과 다르게 반복할 횟수를 정하지 않고 반복을 할 수 있는 문법입니다.

while문의 기본 예제로는 아래와같이 나타낼 수 있습니다.

//초기식
while 조건식:
    //반복할 코드

일단 초기식이 있고 while옆에 조건식이 있고 조건식의 끝을 :을 붙여 마무리 해주며
반복할 코드를 그 아래에 적고 조건식의 결과에 영향을 주는 코드 즉, 변화식을 주어 조건식을 불만족시킴으로 반복을 멈추는 구조입니다.

break , countinue

while문을 강제로 멈추는 방법으로 break를 쓰는 방법이 있습니다. while문에서 break를 읽게 되면 바로 while문을 빠져나오게 됩니다.
또, while문을 강제로 다시 읽게하는 방법으로 countinue문이 있습니다. countinue문을 읽게 되면 while문의 맨 윗줄부터 다시 읽게 됩니다.

중첩반복문

중첩반복문은 반복문 안에 반복문을 쓰는 방법으로 2중,3중 n중 반복문을 사용하는 것을 중첩반복문이라고 부릅니다.

turtle graphics

볼펜을 움직이는 것 처럼 거북이가 움직이면서 발자국 같은것을 남겨그림을 그리는 모듈입니다.
사용방법으로는

import turtle as(객체생성할 때 객체의 이름) (ex: t)
t.shape( [arrow, turtle, circle, square, triangle, classic] )//모양을 지정할 수 있습니다.
t.forward() or t.fd()  // 괄호() 안에 움직이고싶은 거리만큼을 입력합니다.
t.left() or t.lt() or t.right() or t.rt()  // 괄호안에 회전할 각도를 입력합니다.
t.color() // 괄호안에 색을 입력하면 펜의 색이 바뀝니다.
t.begin_fill() and t.end_fill() //begin_fill()을 하면 색칠할 영역의 시작을 알리고 end는 끝을 일립니다.
t.speed() // 모듈이 움직이는 것의 속도를 괄호안에 넣으면 속도를 조정할 수 있습니다.
t.circle() // 괄호안에 반지름을 쓰면 원을 그려줍니다. 

list tuple 응용하기

리스트는 객체입니다. 객체를 생성했으면 그 객체를 조작하는 함수인 method가 있습니다.
리스트의 요소를 추가하는 메서드는 3가지가 있습니다.
append: 요소 하나를 맨 뒤에 추가
extend: 리스트를 연결하여 확장
insert: 특정 인덱스에 요소 추가

append를 리스트 인스턴스인 a에 응용하는 것을 예를 들자면
a = [10. 20, 30] //객체생성
a.append([500, 600])

a
[10, 20, 30, [500, 600]]
len(a)
4

append는 요소 "하나"를 리스트 a 끝에 추가하는 매서드라서 len으로 길이를 구하면 4가 나오게 됩니다.

extend는 리스트 끝에 다른 리스트를 연결하여 확장을 하는 매서드입니다. extend의 특징으로는 한번에 여러개의 요소를 추가할 수 있다는 것 입니다.

예시로는
a = [10. 20, 30]]
a.extend([500, 600])

a
[10, 20, 30, 500, 600]
len(a)
5

가됩니다.

insert는 inser(인덱스, 요소) 순서대로 인자를 넘겨주게 됩니다.
예시로는

a = [10, 20, 30]
a.insert(2, 500)
a
[10, 20, 500, 30]
len(a)
4

2번째 요소에 새로운 요소를 집어넣고 그 뒤 요소들은 인덱스를 1씩 추가하는 형식으로 변경됩니다.

요소삭제

리스트에서 요소를 삭제하는 방법은 2가지가 있습니다.
pop: 마지막 요소또는 인덱스의 요소를 삭제
remove: 특정 값을 찾아서 삭제

pop()은 리스트의 마지막요소를 삭제하고 그 값을 반환합니다.
pop(인덱스)는 해당 인덱스릐 요소를 삭제한 뒤 삭제한 요소를 반환합니다.

a = [10, 20, 30]
a.pop(1)
20
a
[10, 30]

pop대신

del을 사용해도 됩니다.

a = [10, 20, 30]
del a[1]
a
[10. 30]

이와 같이 해줘도 같은 기능을 합니다.

remove(값)을 사용하면 리스트 내에 값을 찾아서 처음찾은 값을 삭제합니다.
예)

a = [10, 20, 30, 20]
a.remove(20)
a
[10, 30, 20]

위와같이 앞에있는 20이 삭제가 됩니다.

리스트로 스택과 큐 만들기

위에 적은 리스트의 매서드 들을 이용하여 스택과 큐를 만들 수 있습니다.
append와 pop을 이용하면 스택이고 append와 pop(0)을 이용하면 큐의 모습이 됩니다.

파이썬에서 큐를 좀더 효율적으로 사용할 수 있도록 덱(deque, double ended queue)라는 자료형을 제공합니다.

form collections import deque
a = deque([10, 20, 30])
a
deque([10, 20, 30])
a.append(500) // 덱의 오른쪽에 500 추가
a
deque([10, 20, 30, 500])
a.popleft() // 덱의 왼쪽 요소 하나 삭제
10
a
deque([20, 30, 500])

deque는 leftpop과 leftappend가 pop과 append와 동시에 사용될 수 있습니다.

count

리스트에서 특정 값의 개수를 구하는 방법으로 count가 있습니다.
a.count(값) //과 같은 형식으로 사용됩니다.

sort, reverse

sort는 리스트에 요소를 오름차순으로 정렬해줍니다.
reverse는 리스트에서 요소를 반대로 뒤집습니다.

sort(reverse=False)라고 하면 오름차순으로 정렬하고
sort(reverse=True)라고 하면 내림차순으로 정렬합니다.

sorted(a) a가 list형 인스턴스일 경우 a가 정렬된채로 새 리스트를 생성합니다.

clear

clear는 리스트의 모든 요소를 삭제합니다.

a = [10, 20, 30]
a.clear()
a
[]

seq empty

시퀀스 객체가 비어있는지 확인하는 방법으로는
if len(seq) 를 하는 방법이 있습니다. 만약 seq가 비어있다면 길이가 0으로 나오기 때문에 if 0이기 때문에 0=="False"이기 때문에 실행이 안됩니다. 만약 비어있지 않다면 True이기 때문에 실행이 됩니다

list copy

a = [10, 20 ,30 ,40]
b = a

a==b	#True

b.apend(50)

print(a)	#[10, 20 ,30 ,40, 50]
print(b)	#[10, 20 ,30 ,40, 50]

c = a.copy()

a==c	#False

print(c)	#[10, 20 ,30 ,40, 50]

c.pop()

print(a)	#[10, 20 ,30 ,40, 50]
print(c)	#[10, 20 ,30, 40]

위와같이 b=a를 하면 a와 같은 주소를 b가 할당하게 되어 b를 변경해도 a가 변경됩니다.
하지만 copy()를 하면 안에있는 새 주소를 할당하여 새 리스트가 만들어짐으로 c를 변경해도 a가 변경이 되지않습니다.

list.for

a = [38, 21, 53, 62, 19]
for i in a:
print(i)

출력:
38
21
53
62
19

list안에 있는 요소들이 순서대로 출력됩니다.

한번에 주기가있는 수를 list에 넣는 방법으로는

a = [i for i in range(10)]
print(a)

출력값으로는
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]가 출력됩니다.

다른방법으로는

b = list(i for i in range(10))

가있습니다.

c = [i + 5 for i in range(10)]    # 0부터 9까지 숫자를 생성하면서 값에 5를 더하여 리스트 생성
print(c)

출력값은
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

으로 위와같은 방법도 가능합니다.

{list.if}

a = [i for i in range(10) if i % 2 == 0]
print(a)

출력값으로는 [0, 2, 4, 6, 8] 와같이 짝수로만 이루어진 리스트를 생성할 수도 있습니다.

[식 for 변수1 in 리스트1 if 조건식1 for 변수2 in 리스트2 if 조건식2 ... for 변수n in 리스트n if 조건식n]

list(식 for 변수1 in 리스트1 if 조건식1 for 변수2 in 리스트2 if 조건식2 ... for 변수n in 리스트n if 조건식n)

위와같은 방법으로 for반복문과 if 조건문을 여러번 사용할 수 있습니다.

2단부터 9단까지 구구단 리스트를 생성.

a = [i * j for j in range(2, 10) for i in range(1, 10)]
print(a)

출력:
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]

enumerate

enumerate를 사용하면 인덱스도 함께 출력이됩니다.

a = [38, 21, 53, 62, 19]
for index, value in enumerate(a):
print(index, value)

출력:
0 38
1 21
2 53
3 62
4 19

과 같이 출력이 됩니다.

for index, value in enumerate(a, start=1):
print(index, value)

start를 지정해주면
1 38
2 21
3 53
4 62
5 19
와같이 index의 값이 1부터 시작합니다.

list.math

list가 있을때 list중 가장큰 값을 반환해주는 max(), list중 가장 작은 값을 반환하는 min()
모든 값을 더해서 반환해주는 sum()이 있습니다.

list.map

map을 이용하여 lsit를 만들 수 있습니다.

map(1,2)
가 있으면 2를 1에 적용시키는 느낌으로 사용이 됩니다.
ex)

a = list(map(str, range(10)))
print(a)

['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
와 같은 식으로 2에 있던 숫자들이 str()에 씌워져 숫자였던 것들이 문자열로 바뀌어 list에 저장이 됩니다.

2차원 list

2차원 리스트는 리스트 안에 리스트를 넣어서 만들 수 있으며 안쪽의 각 리스트는 ,(콤마)로 구분합니다.
리스트 = [[값1, 값2], [값3, 값4], [값5, 값6]]과 같은 형태로 나타내고

a = [[10, 20], [30, 40], [50, 60]]

와같이 만들 수 있고 안에있는 요소에 접근하려면
a[0][0]와 같은 형식으로 부르게되면 값1 인 10을 반환하게 됩니다.

2차원 리스트의 사각형 구조를 유지하도록 출력하려면 pprint모듈의 pprint함수를 사용하면 됩니다.

from pprint import pprint
a = [[10, 20], [30, 40], [50, 60]]
pprint(a, indent=4, width=20)

[ [10, 20],
[30, 40],
[50, 60]]
위와같이 출력이 됩니다.
indent는 들여쓰기 칸 수, width는 가로 폭입니다.

profile
KNU COMPUTER ENGINEERING

0개의 댓글