Python 4

순열, 조합, 중복순열

python에서 순열, 조합등을 구현하려면 제법 귀찮게 코드를 작성하여야 한다. 그런데 찾아보니 외부 라이브러리를 통해 간단히 구현할 수 있어, 정리해보려 한다. 1. 순열(Permutaion) from itertools import permutations nums = [1, 2, 3] permute = permutations(nums, 2) print(list(permute)) [(1,2), (1,3), (2,1), (2,3), (3,1), (3,2)] 2. 조합(Combination) from itertools import combinations nums = [1, 2, 3] combination = combinations(nums, 2) print(list(combination)) [(1,2), (..

Python 반올림 오류 해결

문제 python에서는 숫자를 올리고 내리고자 하는 경우에는 python 내장 모듈인 math 모듈을 import하여 사용할 수 있다. 그리고 반올림은 간단히 round() 를 사용하면 된다. 그런데 round() 함수의 결과가 기대와는 다르게 나오는 경우를 발견하였다. 1.5의 반올림 값은 2이고, 2.5의 반올림 값은 3이다. 지극히 당연하기에 round(1.5), round(2.5) 의 결과값을 각각 2, 3 으로 기대하고 해당 함수를 실행시켜보았다. 실행결과 round(1.5)의 결과는 예상과 같게 2가 나왔지만, round(2.5)의 결과는 예상과는 다르게 2 가 나왔다. 원인 python에서 반올림 기본설정은 반올림할 자리의 수가 5이면 반올림 할 때 앞자리의 숫자가 짝수면 내림하고 홀수면 올..

숫자 List 를 문자 List 로 변환

이전에 list를 문자열로 변환하는 내용을 작성하였는데, 이 방법이 문자로 이루어진 list만 가능하였다. list가 숫자로 이루어진 경우(지난번 예시)에는, 에러가 발생하면서 멈춰버린다. 이 경우 숫자 list를 문자 list로 변환하면 해결이 가능하다. [0, 0, 0, 0] -> ["0", "0", "0", "0"] 문자_list = list(map(str, 숫자_list)) 이를 응용해서 숫자 List를 문자열로 변환할 때는 아래와 같이 할 수 있다. " ".join(list(map(str, 숫자_list)))

[Python] TypeError: 'module' object is not callable 조치

기존에 개발한 python 파일을 다른 python 파일에서 불러다 쓸 일이 생겼다. 그랬더니 다음과 같은 에러가 발생하며 동작하지 않았다. TypeError: 'module' object is not callable import 한 모듈을 class처럼 사용하려 해서 발생한 에러였다. import 한 modlue는 class가 아니기에 class처럼 사용하면 안된다. 주로 File name과 class name을 같게 한 경우, 많이 발생하지 싶다. import 할 파일 AAA.py class AAA(object): 어쩌구저쩌구... b.py import AAA class b(object): aaa = AAA()