Python

[Python] 리스트에 대해 알아보자

PKkomi 2022. 3. 29. 14:41

안녕하세요!

전에 공부했던 Python의 내용들이 다 날아가기 전에 차례대로 복습하려고 합니다.

그 첫번째로 리스트에 대해 알아보자.

 

리스트를 알아보기 전에, 간단하게 Python에 대해 얘기해보자.

프로그래밍 언어에는 기계여, 어셈블리 언어, 고수준 언어, 인터프리터가 있다.

이 중에 Python은 인터프리터에 해당하며 소스 프로그램 한 줄씩 기계어로 바로 해석되어 실행된다.

 

Python을 동작하는 IDE(Integrated Development Environment), 즉 통합개발환경에는 X code, Visual Studio, Code::Blocks 등이 있다.

저는 Python을 배울 때 웹브라우저에서 Python 코드를 작성하고 실행시킬 수 있는 Jupyter Notebook(J.N이라고 하자)을 사용했기 때문에 복습도 J.N으로 하려고 한다.

 

 

이제 코드를 작성할 때 기본적인 것들에 대해 얘기해보자.

 

먼저 변수에 대해 알아야 한다. 변수는 데이터를 저장할 메모리 공간에 이름을 지어준 것이다.

 

변수를 지정할 때 몇 가지 주의사항이 있다.

1) 해당 언어에 미리 정의된 키워드는 사용할 수 없다.

2) 변수에는 _ 이외의 특수 문자는 포함될 수 없다.

3) 알파벳과 숫자로만 이루어진다.

4) 숫자가 변수의 처음에 올 수 없다.

5) 변수에는 띄어스기가 불가능하다.

6) 대문자와 소문자는 다르게 취급된다.

 

좋은 변수는 숫자를 되도록 쓰지 않고, 나만 알아볼 수 있는 변수여서는 안 된다.

변수에는 다양한 type들이 저장될 수 있다.

int, float, string, Boolean, list 등의 type들이 저장될 수 있다.

 

vel = 1e36

 

여기서 변수는 vel이다. 

vel은 앞선 주의사항을 모두 충족하였기에 정당한 변수로 성립된다.

 

연산자에 대해서도 간단히 얘기해보자.

 

우리가 흔히 아는 +,-,*,/,=은 모두 연산자이다.

앞선 예에서 =이 나오는데 이 연산자는 할당연산자라고 한다. 

1e36이라는 값을 변수 vel에 할당시켜주는 것이다.

앞으로 정말 많이 쓰일 것이 바로 연산자다.

 

 

이제 드디어 list에 대해 얘기해보자.

 

List는 Python의 대표적인 데이터 tyep 중의 하나이다.

List의 요소에 int, float, tuple, dict, function 모두가 가능하다.

 

간단한 list를 만들어보자.

 

star = []

 

정말 간단하게 빈 list를 생성해보았다.

 

star = list()

 

이와 같은 방식으로도 빈 list를 생성할 수 있다.

이번에는 여러 개의 요소를 담은 list를 생성해보자.

 

star = [1, 2, 3]
star2 = list((1, 2, 3))

 

star와 star2는 내부 요소가 같은 리스트이다.

 

list를 생성했으니 이번에는 list를 어떻게 다룰 수 있을지 알아봐야 한다.

list는 다양한 내부함수들을 이용해서 다룰 수 있다.

 

star = [1, 2, 3]
print(type(star))
print(len(star))
print(max(star))
print(sum(star))

 

 

print라는 함수는 괄호 안의 내용을 출력해주는 함수다.

type은 괄호 안의 요소가 어떤 데이터 type인지를 알려준다.

max는 가장 큰 요소 하나를 출력하는 함수다.

sum은 요소들의 합을 구해주는 함수다.

 

이를 J.N에서 출력한 값은 다음과 같다.

<class 'list'>
3
3
6

 

이외에도 다음과 같은 다양한 내부함수들이 존재한다.

list의 내부함수

 

 

list를 다룰 때 중요한 기능 중 하나는 슬라이싱[:]이다.

 

[start:stop:step]으로 표현하면 다음과 같다.

start: 추출하고자 하는 값의 인덱스, 생략하면 첫 번째부터 시작

stop: 추출하고자 하는 값의 인덱스에 +1, 생략하면 마지막까지

step: 값의 증가폭, 생략하면 1씩 증가

또한, 슬라이싱을 하면 해당값들을 포함한 list가 된다.

 

이렇게만 보면 잘 이해가 되지 않는다. 

몇 가지 예를 보면 쉽게 이해할 수 있다.

star = [1, 2, 3, 4, 5]
print(star[0])
print(star[-1])
print(star[:2])
print(star[-2:])
print(star[0:])

 

이 식의 결과는 아래와 같다.

1
5
[1, 2]
[4, 5]
[1, 2, 3, 4, 5]

 

star에서 0의 인덱스를 갖는 값은 1이고, :가 없는 경우 그 값만 출력한다.

 

0보다 앞에 있는 인덱스는 -1이고 0의 인덱스가 처음이므로 맨 뒤의 값인 5의 인덱스와 같다. 

 

stop에 2가 있으므로 이는 원래 인덱스에 +1을 해준 것이다. 원래 인덱스는 1이 되고 그 때의 값까지 1씩 증가하며 출력하면 1과 2가 list로 출력된다.

 

-2의 인덱스를 값는 값은 4다. 4부터 끝까지 인덱스가 1씩 증가하기 때문에 4부터 5까지를 포함한 list가 출력된다.

 

시작 인덱스가 0이므로 첫 번째 값인 1부터 끝까지 인덱스를 1씩 증가한 값을 출력한다. 따라서 모든 값을 포함한 list가 출력된다.

 

 

이번에는 반복문에 대해 알아보자.

반복문은 다음과 같은 형식을 띤다.

star = [1, 2, 3]
for i in star:
    print(i)

for i in starstar라는 변수(여기서는 list) 안에 있는 값 i에 대해서 라는 의미이다.

 

for i in star:
    print(i)

Python에서는 어떤 구문을 쓸 때 이 구문에 포함된다는 의미로 :다음 줄에 들여쓰기를 한다.

꼭 기억하자.

print(i)는 이제 반복문 속에 속한 구문이다. 

그렇다면 반복문 속의 이 구문은 어떤 의미일까?

i라는 값을 차레대로 반복해서 출력한다는 뜻이다. 즉, star 안에 있는 모든 값을 순서대로 출력한다.

그 결과는 다음과 같다.

1
2
3

star라는 list의 모든 값이 한 번씩 출력된 것을 볼 수 있다.

 

 

마지막으로 list의 결합, 곱에 대해 알아보자.

list 두 개를 더하면 어떤 일이 벌어질까?

star1 = [1,2,3,4,5]
star2 = [6,7,8,9,10]
new_star = star1 + star2
print(new_star)

star1과 star2의 각각의 값들이 순서대로 더한 값을 지닌 list, star1과 star2의 요소들을 모두 지닌 list.

두 가지를 기대할 수 있다.

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

결과는 다음과 같다.

즉, list의 결합은 그저 list들의 요소를 더하는 것이다.

 

그렇다면 list에 2를 곱하면 어떻게 될까?

star1 = [1,2,3,4,5]
star1*2
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

합과 마찬가지로 요소들은 변하지 않고 요소들이 그대로 뒤에 추가된 것을 볼 수 있다.

 

 

list에 대해 간단히 알아보았다.

다음에는 tuple에 대해 알아보자.