본문 바로가기

파이썬/자주하는 질문20

파이썬(Python) 2차원 배열(Multidimensional Array) 생성하기 파이썬에서 배열은 리스트를 사용해서 생성할 수 있습니다. 1차원 배열 생성은 아래 포스팅을 참고하세요. 2020/09/18 - [파이썬/자주하는 질문] - 파이썬(Python) 배열(Array) 생성하기 2차원 배열은 리스트를 중첩해서 만들 수 있습니다. 예를 들어서, 2행 3열의 2차월 배열을 만들기 위해선 아래와 같이 할 수 있죠. row, column = 2, 3 arr_2d = [[None] * column for i in range(row)] print(arr_2d) # [[None, None, None], [None, None, None]] 좀 더 효율적으로 다차원 배열을 다뤄야 한다면 Numpy 패키지를 사용할 수 있습니다. Numpy는 적은메모리를 사용하며 더 빠르게 다차원 배열을 만들 수.. 2020. 9. 18.
파이썬(Python) 배열(Array) 생성하기 파이썬에서 배열 생성을 위해서는 리스트(list)를 사용하면 됩니다. 파이썬의 리스트는 C와 같은 언어의 배열과 동일합니다. (차이점은, 리스트는 여러가지 다른 타입의 객체를 리스트의 아이템으로 가질 수 있고 크기가 고정되어있지 않다는 것이지요.) 따라서 리스트의 random access는 C의 배열과 같이 아주 빠르게 수행됩니다. (평균 O(1) 시간복잡도를 가집니다). 또한 아이템을 추가하기 위한 append 함수 역시 즉각적으로 수행됩니다. (리스트 다른 멤버함수들의 수행시간은 여기서 확인가능합니다.) 파이썬의 리스트는 아래와 같이 사용이 가능합니다. my_list = [1, 2, 'awesome'] print(my_list[1]) # 2 print(my_list[2]) # awesome my_li.. 2020. 9. 18.
파이썬(Python) if else 구문을 한 줄로 표현하기 상황에 따라서 if else 구문을 한준에 표현하면 코드의 가독성이 올라가는 경우가 있습니다. 방법은 아래와 같습니다. c = a if condition else b 이 구문은 condition이 참(true)가 되면 c는 a가 되고 아니면 b가 되는것이죠. 실제 예제로 확인 해볼께요. x = 10 c = 'hi' if(x % 2 == 0) else 'bye' print(c) # hi 하지만 if else 를 한 줄로 표현하는것을 그렇게 추천드리지는 않습니다. 혹시나 사용이 남발되면 가독성이 떨어질 수 있기 때문입니다. (사실, 아래처럼 간단한 if else 구문을 여러줄에 걸쳐써도 가독성이 떨어지지 않습니다.) x = 10 if x % 2 == 0: print('hi') else: print('bye'.. 2020. 9. 15.
파이썬(Python) 두 개의 리스트를 동시에 순회하기 두 개의 리스트를 동시에 순회(iteration)하는 방법은 zip() 을 통해서 가능합니다. 튜플(tuple)이나 딕셔너리(dictionary)등의 iterable이면 무엇이든 zip()으로 사용할 수 있습니다. one = [1, 2, 3] two = [4, 5, 6] for i, j in zip(one, two): print(i, j) # 1 4 # 2 5 # 3 6 만약 리스트의 크기가 다르다면 갯수가 적은 리스트만큼만 순회(iteration)를 하게 됩니다. one = [1, 2] two = [4, 5, 6, 7] for i, j in zip(one, two): print(i, j) # 1 4 # 2 5 zip() 안에 들어가는 인자를 섞어서 사용할 수 도 있습니다. 아래 예제에선 리스트와 튜플을.. 2020. 9. 13.
파이썬(Python) 딕셔너리 값(value)로 정렬하기 딕셔너리(dictionary)를 각각 아이템의 값(value)로 정렬(sort)해야 할 일이 있습니다. 예를 들어서 특정 문서에서 각각의 알파벳이 나온 횟수를 저장할 때, 딕셔너리의 키(key)를 알파벳으로, 값(value)를 나온 횟수로 저장할 수 있습니다. 만약 어떤 알파벳이 제일 많이 쓰였는지를 알고 싶을때는 딕셔너리의 값으로 정렬을 해야겠지요. 아래 예제에서 확인해 보겠습니다. import operator d = {'a': 5, 'x': 2, 'd': 3, 'c': 1, 'e': 0}# 알파벳을 카운팅한 결과가 딕셔너리로 저장 되었습니다. # 딕셔너리를 아이템별 리스트로 가져와서 아이템의 인덱스 첫번째(즉, value) 값을 키로 정렬합니다. sorted_by_value = sorted(d.ite.. 2020. 9. 13.
파이썬(Python) *args **kwargs 는 무엇일까? 파이썬 코드에서 함수의 파라미터로 *args 또는 **kwargs 를 보는 경우가 있습니다. 기본적으로, *(별표, asterisk)는 여러개의 인자들(positional arguments)을 받겠다는 의미를 포함합니다. 먼저, *args를 살펴볼께요. 아래 예제에서는 foo() 함수에서 *args를 사용하여 인자들을 튜플(tuple)로 받을 수 있게 해줍니다. 즉 args의 타입은 튜플이 되겠죠. 그리고 갯수에 상관없이 얼마든지 인자로 값들을 넘겨줄 수 있습니다. def foo(*args): for a in args: print(a) foo(1, 2) # 1 # 2 foo(1, 2, 3) # 1 # 2 # 3 그럼 **kwargs는 어떨까요? *args와 유사하지만 튜플이 아닌 딕셔너리(dict) 타입.. 2020. 9. 12.