본문 바로가기

개발이야기/python7

list for문 python으로 알고리즘 문제를 풀면서 헤맸던 부분이 있다. list-a로 구현해놓고 for-b처럼 구현되길 바랬던 것이다. 혹시나 해서 b처럼 바꿔보니 혹시나가 역시나가 되는 그런 상황이었다,, a는 아예 똑같은 반복인 것 같다.a를 더 편하게 생각해왔지만 둘은 확실하게 다르다. a=[[0]*5]*6 print(a) #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] b=[[0]*5 for _ in range(6)] print(b) #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0.. 2020. 8. 21.
list 덧셈 list끼리 합치고 싶을 때가 있다. 따로 list를 생성해서 for문으로 하나하나 append 시키는 것보다 '+' 하나로 아주 깔끔하게 합쳐진다. a=[1] b=[2,3] print(a+b) #[1,2,3] 2020. 8. 21.
itemgetter 사용하기 sort문제를 풀 때 key=lambda x:x[1] 이런식으로 풀었었는데 내 기준으로 이것보다 간단한 itemgetter 를 알게되었다. from operator import itemgetter를 써주면 사용할 수 있다. from operator import itemgetter data = [ ("gg", 25, 11), ("sd", 342, 972), ("aa", 36, 616), ("td", 16, 234), ("oi", 95, 435) ] data.sort(key=itemgetter(0)) print(data) #[('aa', 36, 616), ('gg', 25, 11), ('oi', 95, 435), ('sd', 342, 972), ('td', 16, 234)] from operator impo.. 2020. 5. 31.
피보나치 함수 구현 방법 피보나치 함수는 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수다. 재귀함수로 구현하는 예시가 많다. 내가 구현한 재귀함수의 피보나치는 def fibo(n): if n==0: return 0 elif n==1: return 1 return fibo(n-1)+fibo(n-2) print(fibo(6)) #출력:8 이렇게 되는데 가끔 효율성이 떨어져서 알고리즘 문제를 풀면 실패할 때가 있다. 따라서 재귀함수 대신 def fibo(a): x,y=0,1 for i in range(a): x,y=y,x+y return x print(fibo(6)) #출력값 : 8 을 썼더니 같은 코드여도 성공했다,,! 아니면 내가 재귀함수를 .. 2020. 5. 30.
ascii 변환 python에서 유용하게 쓰이는 ascii 변환 문법에 대해 소개하려고 한다! (다른 언어에서도 쓰여욤!_!) 단 두 개만 알면 된다. ord()와 chr() 다. chr는 character로 변환한다는 뜻으로 알고 있었지만 ord는 무슨 뜻인지 궁금했다. 찾아보니 'ordinal'의 약어로 '순서'를 뜻한다. ord() -> 아스키코드 값을 반환하는 함수 chr() -> 문자열의 가장 왼쪽 문자의 아스키 코드 값을 반환하는 함수 예시로 바로 살펴보면 print(ord('a')) #97 print(chr(97)) #a 이렇게 된다. 아스키코드를 이용한 문제가 출제될 때마다 잘 사용해야겠다..! 2020. 5. 17.
range 사용하기 거의 모든 파이썬 알고리즘 문제풀이 사용되는 range에 대해 알아볼 것이다. +여기서 print(i, end=' ')를 해준것은 print(i)로 하면 한 라인에 하나의 i씩 출력되기 때문에 보기 깔끔하게 하려고 한 것이다..! for i in range(3): print(i, end=' ') #0 1 2 for i in range(0,3): print(i, end=' ') #0 1 2 for i in range(0,3,1): print(i, end=' ') #0 1 2 위의 세 range의 범위는 모두 같다. range(i)이면 범위는 0부터 i-1까지, range(0,i)이면 범위는 0부터 i-1까지, range(0,i,1)이면 범위는 0부터 i-1까지 1씩 커진다. 즉, i만 지정해준다면 defa.. 2020. 5. 6.
sorted()와 sort()의 차이 python에서 정렬 문제가 자주 나오고 다른 종류의 문제에서도 정렬이 자주 쓰인다. 여기서 sorted()와 sort()가 쓰이는데 이 두 방법의 차이점은 무엇일까? 먼저, 예시로 설명하자면 a=[3,6,1,4,7] b=sorted(a) print(b) #[1, 3, 4, 6, 7] a=[3,6,1,4,7] a.sort() print(a) #[1, 3, 4, 6, 7] 이렇게 된다. 결과는 당연히 같다. sorted()는 원래의 list는 원래대로 놔두고, 한번 더 list를 가져와 정렬한다. sort()는 원래의 list내에서 정렬이 되는 것이라고 생각하면 된다..! 따라서, sorted()는 메모리 사용량을 두배로 늘어난다고 보면 되고, 속도는 sort()가 빠르다. 때때로 원래의 list를 사용해.. 2020. 5. 3.