파이썬/파이썬(python) 초급

[4-2 파이썬] 데이터구조(data structure), 리스트(list), append(), extend(), offset, index, 리스트시작 0부터, 리스트 순서

Olivia-BlackCherry 2022. 8. 11. 10:07

1. 데이터 구조 Data Structure는 무엇일까?

파이썬에서 데이터를 체계화하고 저장하는 방식을 이야기한다.

변수를 지정하는 것도 데이터 구조다.

변수는 하나의 데이터를 특정한 공간에 저장하는 방식이다.

a = "Olivia"

b = 1

 

 

2. 리스트를 학습해야하는 이유

그런데

만약 서로 관계가 있는 데이터 그룹을 하나의 변수에 저장하고 싶다면 어떻게 할까?

예컨데 10명으로 구성된 우리반 학생들을

각각의 개별 데이터가 아니라,

하나의 데이터 그룹으로 저장하고 싶다면?

 

만약 데이터의 순서를 지정해야 하는 경우는 어떨까?

6-3반 학생들을 번호 순서대로 나열하고 싶을 때처럼 말이다. 

 

리스트를 쓰면 위의 2가지 문제를 해결할 수 있다.

 

 

3. 리스트의 데이터구조

my_class_63 = [item1, item2, item3, ..., item10]

- [] 대괄호를 열어 리스트를 시작하고, 대괄호를 닫아 리스트를 종료한다.

- 대괄호 안에 여러 아이템을 넣는다.

- 아이템을 '요소'라고도 부른다. 

- 아이템은 , 쉼표로 구분한다.

 

예시)

my_class_63 = ["진서", "준후", "민경", "수진", "하람", "가온", "도영", "예진", "기애", "윤혁"]

 

 

4. 리스트 데이터 형식

- string, float, integer, boolean 모든 데이터 형식을 저장할 수 있고,

- string +float 등 혼합된 데이터 형식도 저장할 수 있다. 

 

my_class = [1, 2, "민경", 3, "True", 4, 6, 1.24, 7, 9]

 

 

5. 리스트에는 순서가 있다

"진서" "준후" "민경" "수진" "하람" "가온" "도영" "예진" "기애" "윤혁"
0 1 2 3 4 5 6 7 8 9

첫 시작은 1이 아니라, '0'이다.

 

이를 해석하는 관점 두 가지를 소개하자면, 

먼저 컴퓨터는 2진법, 10진법 등 진법을 따르기 때문

컴퓨터의 거의 모든 프로그래밍에서 순서는 0부터 시작한다고 말할 수 있다.

 

또는 인덱스(index) 숫자의 관점에서 생각해본다면

순서를 매기는 숫자(0,1,2,3,...)가

리스트 시작 부분에서 해당 값까지

이동한 거리나 오프셋(offset)이라고 표현할 수도 있다.

offset뜻 : the amount or distance by which something is out of line. 가장자리에서부터의 거리

"진서" "준후" "민경" "수진" "하람" "가온" "도영" "예진" "기애" "윤혁"
0 1 2 3 4 5 6 7 8 9

| 이동거리 X

----------------| 이동거리 1

--------------------------------| 이동거리 2

-------------------------------------------------| 이동거리 3

 

첫 항목은 리스트의 시작 부분에 위치하기 때문에 오프셋이 없어 0이다.

따라서 "진서" 의 이동거리 또는 오프셋은 0이다. 

첫 시작에서부터 "준후"까지 이동한거리(오프셋)은 1이고

첫 시작에서부터 "민경"까지 이동한거리(오프셋)은 2이다.

 

 

6. 리스트 값 출력 : 양수인덱스

my_class_63에서 첫 번째 아이템을 출력하고 싶다면

변수에 대괄호를 치고, 그 안에 순서를 적어주면 된다.

print( my_class_63[0] )

>"진서"

print( my_class_63[5] )

>"가온"

 

 

7. 리스트의 순서, 음수도 가능: 음수인덱스

"진서" "준후" "민경" "수진" "하람" "가온" "도영" "예진" "기애" "윤혁"
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1

print( my_class_63[-1] )

>"윤혁"

print( my_class_63[-4] )

>"도영"

 

 

8.리스트 값 변경하기

어떻게 보면 리스트도 하나의 변수라고 생각할 수 있다. 

변수는 변할 수 있는 수이다. 

따라서 리스트 값도 변경이 가능하다.

 

대신 리스트는 여러 개의 값이 들어있기 때문에

어떤 값을 변경할 지 지정해줘야 한다. 

 

원래  my_class_63[0] = "진서"

였다.

 

0번째 인덱스 값을 진서가 아니라, 진수로 바꾸고 싶다면

다음과 같이 작성하면 된다.

my_class_63[0] = "진수"

my_class_63 = ["진수", "준후", "민경", "수진", "하람", "가온", "도영", "예진", "기애", "윤혁"]

 

 

9. append()함수: 리스트 값 추가하기

리스트 값을 추가할 때는 append()함수를 쓴다.

가장 마지막에 값이 추가된다.

append뜻: add (something) as an attachment or supplement. 무엇인가를 붙인다

리스트.append(값)

my_class.append("다교")

my_class_63 = ["진수", "준후", "민경", "수진", "하람", "가온", "도영", "예진", "기애", "윤혁", "다교"]

 

 

10. extend()함수: 리스트에 리스트 추가하기

여러 개의 항목을 리스트 마지막에 추가할 때는 extend()함수를 쓴다.

extend뜻: postpone (a starting or ending time) beyond the original limit. 원래 길이에서 확장한다.

리스트.extend(리스트)

my_class.append(["민규", "수환", "보미"])

my_class_63 = ["진수", "준후", "민경", "수진", "하람", "가온", "도영", "예진", "기애", "윤혁", "다교", "민규", "수환", "보미"]

 

 

더많은 함수는 아래에서 확인할 수 있다.

하지만 모든 함수를 외울 필요는 없다!

너무나도 양이 방대하기 때문이다..

어떤 경우에 어떤 함수를 적용할 수 있을지,

이해하고 넘어가면 된다.

나중에 필요한 경우 검색하여 자료를 찾으면 된다.

프로그래밍은 오픈 북 시험과도 같다!:-)

https://docs.python.org/3/tutorial/datastructures.html 

 

5. Data Structures — Python 3.10.6 documentation

5. Data Structures This chapter describes some things you’ve learned about already in more detail, and adds some new things as well. 5.1. More on Lists The list data type has some more methods. Here are all of the methods of list objects: list.append(x)

docs.python.org