컴퓨터 공학과 학생들은 보통 C나 자바를 많이 배운다. 요즘은 파이썬을 가르치는 곳도 있다고는 하지만, 한국 대학에서는 아직 C를 쓰는 곳이 더 많은 것 같다.

문제는 요즘 대학들이 데이터과학이나 인공지능, 딥러닝 수업을 개설하면서, 학생들이 갑자기 파이썬을 배우게 생겼다는 것이다.

필자는 프로그래밍과 함께 데이터분석 코칭을 하고 있다. C를 하던 습관대로 파이썬 프로그래밍을 하다가 좌절?하고 필자를 찾아오는 경우가 종종 있다.

파이썬은 C가 아니다. 파이썬 나라에 왔으면 파이써닉pythonic한 법을 따라야한다고 할까. C에서 하던 방식대로 파이썬 프로그램을 짜면 급격히 느려지는 모습을 볼 수 있다.

학생들은 C나 파이썬이 왜 그런 방식으로 프로그래밍을 하는지 잘 모르는 경우가 많았다. 오늘은 그러니 파이썬과 C의 차이에 대해 배워보자.

단순하게 숫자의 합을 구하는 프로그램의 예시를 들어 설명해보겠다.

데이터 만들기

일단 다음과 같은 코드를 통해서 1부터 10사이의 무작위 정수로 이루어진 길이 10000000의 배열과 리스트를 만들었다.

import numpy as np

a = np.random.randint(10, size=10000000) #넘파이 배열
b = list(a) #파이썬 리스트

#앞 부분만 잘라서 어떻게 생겼는지 보자.
print(a[:10])
#출력. 숫자를 랜덤으로 생성했으니, 결과는 사람에 따라 다를 것이다.
array([3, 7, 4, 4, 0, 2, 9, 7, 6, 0])

파이썬의 기본 자료형은 길이가 동적인 리스트다. 그래서 C 같은 순수? 배열을 쓰려면 C를 이용해 만들어진 라이브러리인 numpy를 사용한다.

자, 이 배열과 리스트에 있는 모든 숫자의 합을 구하려면 어떻게 하면 될까?

i 인덱스로 for문 돌리기

c에 익숙한 초보 프로그래머라면 배열의 길이만큼 i 인덱스를 1씩 증가시키면서 for문을 돌리곤 한다.

파이썬에서는 이런 함수로 구현할 수 있다.

def for_i_sum(a):
    sum_of_all = 0
    length = len(a)
    for i in range(length):
        sum_of_all += a[i]
        
    return sum_of_all