[파이썬 프로그래밍 10] for 를 사용해 목록을 만드는 두가지 방법

Home / 파이썬 프로그래밍 / [파이썬 프로그래밍 10] for 를 사용해 목록을 만드는 두가지 방법

for 를 사용해 목록을 만드는 두가지 방법

목록을 만드는 아주 기초적인 방법을 알아보겠습니다.
먼저 아무 것도 없는 빈 목록을 만들려면 아래와 같이 써주면 됩니다.

a = []

대괄호안에 아무것도 넣지 않았으니 아무 것도 없는 목록이 만들어집니다. 목록에 몇개가 들어있는지를 확인하려면 len이라는 함수를 쓰면 됩니다. a라는 변수에 저장된 목록 속에 아무것도 없으니 아래와 같이 쓰고 Shift-Enter를 치면 0이라는 결과를 내놓습니다.

len(a)

이제 빈 목록에 어떤 값을 넣는 방법을 알아보겠습니다. append라는 함수를 쓰면 됩니다. 그런데 이 함수는 목록안에서 쓰는 함수입니다. 그래서 달랑 append를 쓰면 안되고, 목록을 저장한 변수를 먼저 쓰고 점(.)을 쓴 다음에 append 함수를 씁니다.

a.append(3)
len(a)

위에서 첫째줄은 a에 저장된 빈 목록에 3을 추가합니다. 그리고 두번째줄은 목록에 몇개의 값이 있는지 알려줍니다. 위의 두줄을 쓴다음 Shift-Enter를 치면 1이라는 결과가 나옵니다. a에는 아래와 같이 3이라는 값 하나만 지닌 목록이 저장되어 있기 때문입니다. jupyter notebook에서 a만 쓰거나 아래와 같이 print를 써서 확인할 수 있습니다.

print(a)

그러면 아래와 같은 결과를 출력합니다.

[3]

추가로 다음 세줄을 쓰고 Shift-Enter를 쳐서 실행해보죠.

a.append("BTS")
a.append("fake love")
a.append(5)

이제 a에는 어떤 목록이 저장되어 있을까요? 일단 먼저 목록 내용을 예축해보고 print(a)을 쳐서 확인해보죠.

[3, "BTS", "fake love", 5]

맞혔으면 이제 다음 단계로 넘어갑니다.

목록속에 있는 값들을 하나씩 알아보려면 변수다음에 대괄호를 쓰고 안에 위치를 나타내는 숫자를 쓰면됩니다. 여기에서 중요한 것이 목록안의 첫번째 값의 위치를 나타내는 숫자는 0라는 사실입니다. a에 저장된 목목안에 있는 첫번째 값을 알아보려면 a[0]이라고 써서 확인해야합니다.

print(a[0])

그러면 3이라는 결과를 출력합니다. 목록의 두번째 값을 알아보려면 a[1]을 쓰면 됩니다. 목록의 첫번째 값 위치는 대부분의 프로그래밍 언어에서 0으로 표시합니다. 하지만, FORTRAN, R, Mathematica애서는 목록의 첫번째 값 위치를 1로 표시합니다.

목록을 값을 하나 하나 바꿀때도 a[0]와 같이 써서 변수처럼 쓰면 됩니다.

a[0] = "Billboard"
a[2] = "DNA"
print (a)

그려면 a에 저장된 목록안의 첫번째와 세번째 값을 바꿉니다. 위의 코드를 실행한 결과는 다음과 같습니다.

['Billboard', 'BTS', 'DNA', 5]

이제 for를 이용해서 목룩을 만드는 방법을 알아보겠습니다.

x라는 변수에 1*1, 2*2, 3*3, … 10*10의 값을 지니는 목록을 만들어 보죠. x에 빈 목록을 먼저 저장합니다. 그런다음 1부터 10까지 자연수를 포함하는 목륵을 range함수로 만들어 for 에 아래와 같이 집어 넣습니다.

x = []
for n in range(1,11) :
    x.append(n*n)
print(x)

위의 코드에서 for 다음에 들여쓴 줄을 반복해 실행합니다. n*n을 $n\times n$을 의미합니다. 따라서 n의 제곱을 x에 저장된 목록에 추가하는 겁니다. 위의 코드를 쓰고 Shift-Enter를 치면 아래의 결과를 출력합니다.

[1, 4, 9, 16, 25, 36, 49, 64,81, 100]

그런데 파이썬에서는 for 를 목록을 만드는 대괄호 안에 써서 같은 내용을 더 짧은 코드로 프로그래밍할 수 있습니다. 다음과 같이 쓰면 됩니다.

x = [ n*n for n in range(1,11) ]
print(x)

for를 쓴 줄 맨 마지막에 있는 :을 쓰지 않고,  for 앞에는 목록 넣을 값을 계산하는 수식이나 함수를 쓰면 됩니다. 마치 for 다음줄에 들여쓰기하는 줄에서 목록에 집어넣는 값을 계산하는 표현만 for 앞으로 온다고 보면 되겠습니다.  이렇게 프로그래밍을 해도 같은 결과를 출력합니다.

n*n 은 n**2로 써도 됩니다. n**2는 $n^2$를 의미하기 때문에 같은 결과가 나옵니다.

x = [ n**2 for n in range(1,11) ]
print(x)

만약에 자연수의 세제곱 목록을 만들려면 다음과 같이 쓰면 됩니다.

x = [ n**3 for n in range(1,11) ]
print(x)

이 방법을 쓰면 코드가 매우 간단해지는 장점이 있습니다. 처음에는 이런 코드를 읽기가 좀 부담스러울 수 있습니다. 하지만 자주 반복해서 이 방식으로 목록을 만드는 프로그래밍을 하다보면, 다른 사람이 쓴 코드도 쉽게 이해할 수 있게 익숙해집니다.