본문 바로가기

python3

(9)
[파이썬] 사용자입력받기 / 문자열 나누기(split()) 코딩테스트 문제를 풀다보면 사용자 입력이 공백으로 구분되어 있는 경우가 있다. 이 경우에 input()을 통해 한 줄씩 불러올 수 있다. 이 경우 문자열로 사용자 입력을 받게 된다. >>> x = input() kidev >>> x 'kidev' >>> y=input() 12345 >>> y '12345' 파이썬 커맨드 창에 맨 윗줄과 같이 x = input() 과 같이 입력하면 사용자가 입력을 할 때까지 기다렸다가, 입력을 하고 나면 x에 사용자 입력값을 문자열로 담게 된다. 혹시 변수가 창에 보여질 때 필요한 양식이 있다면 input('표시할 문장') 과 같이 쓸 수 있다. z 값을 입력 받기 위해 사용자 입력을 받을 때 'z : ' 이 보여지게 했다. >>> z = input('z : ') z : ..
[파이썬] 람다 lambda 함수 / map 함수 람다 함수는 함수 선언 없이 그 자리에서 함수를 사용할 수 있게 해준다. def plus1(x): return x+1 위와 같은 함수를 다음과 같이 선언 해주기만 하면 된다. lambda x:x+1 즉, lambda 변수 : 식 과 같이 사용하면 된다. 그럼 다음과 같이 함수와 똑같이 적용할 수 있다. >>> def plus1(x): ... return x+1 ... >>> plus1(2) 3 >>> (lambda x:x+1)(2) 3 모든 원소에 똑같은 효과(예시에서는 원소에 +1을 하는 것)를 적용시키고 싶다면 map 함수를 쓰면 효율적이다. map 함수 없이 리스트의 모든 원소에 효과를 적용시키려면 다음과 같이 for 문을 작성해야한다. >>> l = [1,2,3,4,5] >>> for i in r..
[파이썬] 제너레이터 / Generator >>> def infinite_sequence(): ... num = 0 ... while True: ... yield num ... num += 1 ... >>> infinite_sequence() 위의 식(infinite_sequence())은 함수 선언과 비슷하지만, return 대신 yield가 쓰였다는 점이 다르다. return 은 함수를 종료시키는 데 반해, yield 는 caller에 값을 전달하고 함수를 종료시키지 않는다. 대신에 함수의 state가 기억되고 후에 next()를 통해 1이 더해진 num값을 넘겨받을 수 있다. 위와 같은 함수를 generator function 이라고 한다. >>> def seq(): ... return 1 ... >>> seq() 1 >>> seq >>> ..
[파이썬] 리스트 복제하기 파이썬을 사용하다 보면 리스트를 복제하여 쓰곤 하는데 이 경우에 다음과 같이 카피하는 경우가 많다. list1 = list2 이렇게 되면 리스트를 잘 복제한 것처럼 보이지만 사실은 list1 과 list2 는 같은 리스트를 가리키고 있게 된다. list2 의 id, 즉 메모리의 주소가 list1 의 그것과 같은 것을 볼 수 있다. >>> list1 = [1,2,3,4,5] >>> list2 = list1 >>> print(list1, id(list1)) [1, 2, 3, 4, 5] 4307916032 >>> print(list2, id(list2)) [1, 2, 3, 4, 5] 4307916032 해결하는 방법은 다음과 같다. slicing을 사용해서 복제할 수 있다. >>> list2 = list1[:..
[파이썬] 딕셔너리의 key와 value에 동시에 접근하기 그냥 for문을 써서 딕셔너리에 접근하면 key만을 얻을 수 있다. >>> ex_dictionary = {'A' : 1, 'B' : 2, 'C' : 3} >>> for i in ex_dictionary: ... print(i) ... A B C for 문 내부에서 직접 value를 찾아줄 수도 있지만 효율적인 방법같지는 않아 보인다. >>> for i in ex_dictionary: ... print(ex_dictionary[i]) ... 1 2 3 아니면 values() 함수를 이용해서 직접 value에 접근할 수도 있다. >>> for i in ex_dictionary.values(): ... print(i) ... 1 2 3 딕셔너리의 key 와 value에 동시에 접근하기 위해서는 .items()..
[파이썬] 이터레이션 iteration / 이터레이터 iterator Iteration 이라 하면 똑같은 코드 블럭을 반복적으로 실행하는 것을 말한다. 여기에는 definite / indefinite iteration 두 가지가 있는데 definite iteration 은 반복 횟수가 외부에 잘 드러난 경우이고, indefinite iteration 의 경우에는 어떤 조건이 이뤄질 때까지 코드 블럭이 반복적으로 실행된다. Definite iteration 은 보통 for loop로 일컬어진다. python의 for 문은 Collection-Based 또는 Iterator-Based Loop 라고 불린다. 다음과 같은 형식으로 쓰이게 된다. for i in : 일반적인 파이썬의 for loop를 써보자면 다음과 같다. for in : 은 object들로 이루어진 컬렉션(co..
[파이썬] for 문 / range 2024.02.05 - [프로그래밍 언어/파이썬] - [파이썬] 이터레이션 iteration / 이터레이터 iterator [파이썬] 이터레이션 iteration / 이터레이터 iterator Iteration 이라 하면 똑같은 코드 블럭을 반복적으로 실행하는 것을 말한다. 여기에는 definite / indefinite iteration 두 가지가 있는데 definite iteration 은 반복 횟수가 외부에 잘 드러난 경우이고, indefinite ki-dev.tistory.com iteration 의 예시는 다음과 같다. for item in iterable: 반복 구문 위와 같은 코드로 반복문을 많이 만들고는 한다. iterable object 라고 하면 반복가능한 객체이다. iterable 객..
[파이썬] 리스트의 요소와 인덱스를 같이 표현하는 법 / enumerate() 리스트의 요소와 함께 그에 맞는 인덱스를 함께 사용할 때 다음과 같이 사용하는 경우가 많다. >>> lis = ['A', 'B', 'C', 'D', 'E'] >>> number = 0 >>> for i in lis: ... print(number, i) ... number += 1 ... 0 A 1 B 2 C 3 D 4 E 하지만 이렇게 되면 number 라는 쓰이지 않는 변수가 하나 더 생성된다. 혹은 다음과 같이 사용하는 경우도 있다. >>> lis = ['A', 'B', 'C', 'D', 'E'] >>> for i in range(len(lis)): ... print(i, lis[i]) ... 0 A 1 B 2 C 3 D 4 E enumerate()를 활용하면 간단하게 인덱스와 값을 나타낼 수 있다..