Python - 리스트

2022. 3. 27. 16:42Python

파이썬에서는 다른 언어의 배열과 비슷한 리스트라는 자료형이 있다.

배열은 같은 자료형의 데이터만 담을 수 있었지만 리스트는 상관이 없다.

a = ["한국","북한", "일본"]
print(a)
print(a[1])
print(a[:1])
print(a[0:])

출력 결과

['한국', '북한', '일본']
북한
['한국']
['한국', '북한', '일본']

리스트에서도 인덱스의 개념이 있다는 사실을 알고가자.

 

리스트안에 리스트->리스트->리스트-> 처럼 다차원 배열 형식으로도 사용 가능하다

a = ["한국","북한", "일본",["서울", "울산", "부산"]]
print(a[3][1])

출력 결과

울산

 

리스트의 인덱싱 연산에 대해 알아보자

a = ["한국","북한", "일본",["서울", "울산", "부산"]]

print(a[0]+a[1])

출력 결과

한국북한

숫자를 입력하면 파이썬에서 정수형으로 판단해 연산해준다.

a = [2,4,5]
print(a[0]+a[1])

출력 결과

6

하지만 자료형이 다를 경우에는

a = [2,'ss',5]
print(a[0]+a[1])

출력 결과

TypeError: unsupported operand type(s) for +: 'int' and 'str'

정수형과 문자열의 연산은 불가능하기 때문에 위와 같은 오류가 발생한다.

 

리스트끼리의 연산도 가능하다

a = [1,2,3,4]
b = [5,6,7,8,9]
print(a+b)

출력 결과

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

리스트의 연산도 가능하다

a = [1,2,3,4]
b = [5,6,7,8,9]
print(a*3)

출력 결과

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

 

리스트의 값을 변경해보자

a = [1,2,3,4]
a[2] = 555
print(a)

출력 결과

[1, 2, 555, 4]

연속해서 값을 바꾸는 것도 가능하다

a = [1,2,3,4]
a[0:2] = [77,88,99,2000,123213]
print(a)

출력 결과

[77, 88, 99, 2000, 123213, 3, 4]

범위를 지정한 부분에 대해서는 값을 변경하고 그 후에 초과하는 인덱스의 값들은 추가로 더해져서 기존의 2,3 번 인덱스의 위치는 5,6번 인덱스로 밀려나는 것을 확인할 수 있다.

리스트 같은 개념은 다양한 예제를 통해 직접 경험하는 것이 특히 중요하니 혼자서 여러가지 해보는걸 추천한다.

 

<del 함수>

a = [1,2,3,4]
del a[0]
print(a)

출력 결과

[2, 3, 4]

말 그대로 해당 인덱스를 delete하는 함수이다.

 

<append 함수>

a = [1,2,3,4]
a.append(21)
print(a)

출력 결과

[1, 2, 3, 4, 21]

<정렬 함수>

a = [3, 5, 1, 2]
a.sort()
print(a)

출력 결과

[1, 2, 3, 5]

*sort 함수의 경우 문자의 경우 가나다, abc순 숫자의 경우 크기 순으로 정렬 해준다.

 

<reverse 함수>

a = [3, 5, 1, 2]
a.reverse()
print(a)

출력 결과

[2, 1, 5, 3]

값의 크기에 따른 정렬이 아닌 단순히 인덱스를 역순으로 정렬하는 함수임을 체크하고 가자.

 

전에 넘어갔던 index함수에 대해 짧게 소개해보겠다.

a = [3, 5, 1, 2]

print(a.index(5))

출력 결과

1

값 5에 대한 위치는 1번째 인덱스에 있다는 의미로 1이 출력된 것을 확인할 수 있다.

만약 리스트 안에 존재하지 않는 값을 넣는다면 어떻게 출력이 될까?

a = [3, 5, 1, 2]

print(a.index(9))

출력 결과

ValueError: 9 is not in list

 9라는 값은 리스트안에 존재하지 않는다고 오류 메세지가 출력 된다.

 

<insert 함수>

a = [3, 5, 1, 2]
a.insert(0,777)
print(a)

출력 결과

[777, 3, 5, 1, 2]

insert(인덱스 위치, 삽입할 값) 형식으로 0번째 인덱스에 777이라는 값을 넣어달라 하였고

그에 맞는 올바른 결과가 출력된 것을 확인할 수 있다.

 

<remove 함수>

del 함수는 해당 인덱스를 지우고자 할 때 사용하는 함수이다.

remove는 인덱스가 아닌 값 자체를 지우고자 할 때 사용하는 함수라는 차이점을 기억하자.

a = [3, 5, 1, 2]
a.insert(0,777)
print(a)
a.remove(777)
print(a)

출력 결과

[777, 3, 5, 1, 2]
[3, 5, 1, 2]

만약 같은 값이 여러개라면??

a = [1,1,1,1,1,5]
a.remove(1)
print(a)

출력 결과

[1, 1, 1, 1, 5]

 find 함수와 같이 해당 문자열을 만나는 순간 종료되는 것을 확인할 수 있다.

그래서 1을 다 지우는 것이 아닌 가장 맨 앞의 1을 지우고 그 후의 1들은 그대로인 것을 짚고 넘어가자.

 

<pop 함수>

a = [1,5,8,7]
print(a.pop())
print(a)

출력 결과

7
[1, 5, 8]

pop함수는 가장 마지막 인덱스를 꺼내는 함수이다.

 

<count 함수를 이용한 해당 값 갯수 세기>

a = [1,5,8,1,1,1,1,5,2]
print(a.count(1))

출력 결과

5

리스트에서도 동일하게 작동하는 것을 확인할 수 있다.

 

<extend 함수>

a = [1,4]
a.extend([2,3])
print(a)

출력 결과

[1, 4, 2, 3]

 

 

<for문을 이용해 리스트 안에 바로 평균 값을 넣어주기>

kor = [99, 80, 89, 98]
math = [80, 89, 90, 87]
eng = [90, 98, 80, 79]

student_avg = []

for idx in range(4):
    avg = (kor[idx] + math[idx] + eng[idx])/3
    student_avg.append(avg)

print(student_avg)

출력 결과

[89.66666666666667, 89.0, 86.33333333333333, 88.0]

 

'Python' 카테고리의 다른 글

Python - 제어문  (0) 2022.03.27
Python - 자료형의 값을 저장하는 공간 <변수>  (0) 2022.03.27
Python - boolean  (0) 2022.03.27
Python - tuple/dictionary/set  (0) 2022.03.27
Python - 기초  (0) 2022.03.27