독학개념 📖▶️ 파이썬

[파이썬 독학 개념 정리] | ⑥ 데이터 타입 3. 군집 자료형 [ list ]

코뮤니티 2020. 10. 28. 18:21

기본 개념

1. 파이썬 변수

우리의 코드는 컴퓨터가 연산을 하도록 만드는 것이며, 컴퓨터가 연산을 하기 위해서는 '값'이 필요합니다.

만약 우리가 컴퓨터에게 값을 주지 않으면 " 컴퓨터 ! 이거 계산해봐~ " 라고 말만할 뿐, 무엇을 어떻게 계산하라는 것인지 컴퓨터는 알수 없죠!

여기서의 '값'을 저장하는 것이 '변수'가 하는 역할입니다.

변수를 통해 컴퓨터의 메모리에 값이 저장될 때 비로소 컴퓨터는 우리가 작성한 코드를 바탕으로 연산이 가능해집니다. 따라서 대부분의 프로그래밍 언어에서 변수는 필수 개념이죠!

그렇다면 변수는 어떻게 사용할까요? 변수를 사용하기 위해서는 변수를 선언해 주어야합니다.

파이썬의 장점 중 하나가 변수 선언이 간편하다는 것인데요, 파이썬은 타입추론을 사용하기 때문에 특별한 타입 지정없이 초기값을 할당하면 데이터 타입이 정해지고, 변수가 선언됩니다.

2. 파이썬 데이터 타입(자료형)

'데이터 타입'은 변수에 저장하는 값의 종류를 의미합니다.

예를 들어 변수에 저장되는 값이 1, 2, 3과 같은 숫자의 형태일수 있고, '안녕', 'python'이라는 문자열의 형태일수 있죠.

파이썬(Python)에서는 int(정수), float(실수), complex(복소수), bool(불), str(문자열), list(리스트), tuple(튜플), set(집합, 셋), dict(사전, 딕셔너리)가 있습니다. 이러한 데이터 타입을 이해하기 쉽게 수치자료형, 불자료형, 군집자료형으로 구분하기도 합니다.

  • 수치 데이터 타입 : int, float, complex
  • 불 데이터 타입 : bool (True or False)
  • 군집 데이터 타입 : str, list, tuple, set, dict

다양한 데이터 타입 중 해당 게시물에서는 불 데이터 타입을 확인하고, 이를 사용하는 방법에 대해 알아보겠습니다.

 


파이썬의 데이터 타입 4. 군집 - 리스트(List)

리스트(list)는 군집 데이터 타입이자, 대표적인 파이썬의 시퀀스(sequence) 데이터 타입입니다.

여기서 시퀀스 데이터 타입이란 나열이 가능한 자료형을 의미합니다. 시퀀스 데이터 타입은 C언어나 자바의 [배열] 개념과 마찬가지로 데이터를 하나씩 나열이 가능하다는 점과 인덱스를 통하여 특정위치에 접근 하는 것이 특징을 가지고 있습니다.

쉽게 말해서 리스트는 ' 데이터의 목록' 입니다. 예를 들어 쇼핑을 하기 전에 살 물건을 정리하는 목록을 생각해 봅시다. 여기서 내가 쇼핑할 품목을 적은 목록이 리스트가 되는것이고, 각각의 품목들이 리스트에 들어가는 데이터들이 되는 것이죠.

기본적인 리스트 데이터 타입의 변수 선언은 아래와 같습니다. 선언의 경우, 빈 리스트를 선언데이터가 들어 있는 리스트를 선언하는 두가지 방법이 존재합니다. 참고할 점은 하나의 리스트에 여러가지 데이터 타입의 요소를 저장할 수 있다는 점입니다.

#빈 리스트 선언
변수명 = []

#데이터가 들어 있는 리스트 : 한 리스트에는 여러가지 데이터 타입 저장이 가능합니다.
변수명 = [데이터1, 데이터2, 데이터3] 
#빈 리스트 예시
list_blank = []

#정수형 데이터(1,2,3)가 들어있는 리스트 예시
list_1 = [1,2,3]

#문자열 데이터(a, b, c)가 들어 있는 리스트 예시
list_2 = ['a', 'b', 'c']

#여러 데이터 타입이 혼합된 리스트 예시
list_3 = ['a', 'b', 'c', 1, 2, 3, ['리스트 내부 리스트 추가도 가능!', 10, 20, 30]]

print(list_blank)
print(list_1)
print(list_2)

#결과
[]
[1, 2, 3]
['a', 'b', 'c']
['a', 'b', 'c', 1, 2, 3, ['리스트 내부 리스트 추가도 가능!', 10, 20, 30]]

 

 


1. 리스트의 요소와 인덱스

리스트에 들어가 있는 데이터는 '요소' 라고 지칭하며, 요소는 '인덱스'라는 중요한 개념을 가집니다.

인덱스란 쉽게 설명하자면, 요소의 '순서(위치)'라고 생각하면 됩니다. 리스트의 인덱스는 요소를 출력하는데 도움을 주는 역할을 합니다.

리스트 인덱스에서 주의할 점은 요소의 인덱스는 '0'부터 시작한다는 것입니다. 예를 들어 봅시다!

예를 들어, list_1 = ['a', 'b', 'c', 10, 20 ] 라는 리스트가 선언되어 있다고 합시다. 각 요소의 인덱스는 아래와 같습니다.

(참고로 인덱스는 음수(-)로도 표현이 가능하며, 사용방법은 동일합니다.)

리스트 요소

'a'

'b'

'c'

10

20

인덱스

0

1

2

3

4

음수 익덱스

-5

-4

-3

-2

-1

A. 리스트의 인덱스 이용: 요소 출력하기

#리스트 인덱스로 요소를 출력하는 기본 코드
리스트의 변수명[인덱스번호]
#리스트 선언
list_1 = ['a', 'b', 'c', 10, 20 ]

#인덱스로 요소 불러오기
print(list_1[0])
print(list_1[1])
print(list_1[2])
print(list_1[3])
print(list_1[4])

#결과
a
b
c
10
20

#다중 리스트
list_2 = [1,2,['a','b','c'],3]

#인덱스로 요소 불러오기
print(list_2[0])
print(list_2[1])
print(list_2[2])
print(list_2[3])

#결과
1
2
['a', 'b', 'c']
3

#리스트 속에 있는 리스트의 요소도 인덱스로 출력이 가능합니다.
print(list_2[2][0])
print(list_2[2][1])
print(list_2[2][2])

#결과
a
b
c

 

B. 리스트의 인덱스 이용: 요소 수정하기

#인덱스를 이용한 리스트 요소 수정
리스트의 변수명[인덱스번호] = 수정할 요소 값
#리스트 선언
list_1 = ['a', 'b', 'c', 10, 20 ]

#인덱스를 이용하여 리스트 요소 수정 선언
list_1[0] = 1

print(list_1)

#결과
#리스트 선언
list_1 = ['a', 'b', 'c', 10, 20 ]

#인덱스를 이용하여 리스트 요소 수정 선언
list_1[0] = 1

print(list_1)

#결과
[1, 'b', 'c', 10, 20]

 

C. 리스트의 인덱스 이용: 리스트 슬라이싱

슬라이싱이란 기준을 통해 잘라내는 행위를 의미합니다. 리스트의 슬라이싱의 경우, 인덱스를 이용하여 리스트를 잘라낼 수 있습니다.

#리스트 슬라이싱 기본 코드
리스트 변수명[n:]  #인덱스 n을 포함한 이전에 있는 데이터 요소 자르기 (리스트의 처음부터 리스트[n-1]까지 슬라이싱) 
리스트 변수명[:n] #인덱스 n을 포함한 이후에 있는 데이터 요소 자르기 (리스트[n]부터 리스트의 끝까지 슬라이싱)
list_1 = ['a', 'b', 'c', 10, 20 ]

print(list_1[:3])
print(list_1[3:])

#결과
['a', 'b', 'c']
[10, 20]

 


2. 리스트 관련 함수

파이썬에는 리스트를 좀 더 쉽게 활용할 수 있는 함수가 존재합니다.

A. append( ) : 요소 추가하기 (리스트 요소 마지막에 추가)

#인덱스 요소 추가하기
리스트 변수명.append(추가하고 싶은 요소)
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

list_1.append(99999)
list_1.append('추가')

print(list_1)

#결과
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 99999, '추가']

 

B. insert( ) : 요소 삽입하기 (리스트 요소 사이 원하는 곳에 추가)

#인덱스 요소 삽입하기 : a번째 위치에 b를 삽입
리스트 변수명.insert(원하는 index, 추가하고 싶은 요소)
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

list_1.insert(0,99999)
list_1.insert(1,'추가')

print(list_1)

#결과
[99999, '추가', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

C. remove( ) : 요소 삭제하기

#인덱스 요소 삭제하기
리스트 변수명.remove(삭제하고 싶은 요소)
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

list_1.remove(1)
list_1.remove(10)

print(list_1)

#결과
[2, 3, 4, 5, 6, 7, 8, 9]

 

D. index( ) : 요소 인덱스 출력하기

# 리스트 요소의 인덱스 찾기
리스트 변수명.index(인덱스를 찾고 싶은 요소)
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(list_1.index(1))
print(list_1.index(10))

#결과
0
9

 

E. sort( ) : 요소 정렬하기

#리스트 오름차순 정렬
리스트 변수명.sort()

#리스트 내림차순 정렬
리스트 변수명.sort(reverse=True) #revers는 역순으로 정렬하는 기능을 합니다.
list_1 = [4, 2, 0, 5654, -31, 10, 9 ,77, 87654321]

list_1.sort()
print(list_1)

#결과
[-31, 0, 2, 4, 9, 10, 77, 5654, 87654321]

list_1.sort(reverse=True)
print(list_1)

#결과
[87654321, 5654, 77, 10, 9, 4, 2, 0, -31]

 

F. split( ) : 문자열을 나누어 리스트에 저장하기

#기준이 없이 문자열 나누기 : 공백을 기준으로 잘려서 리스트에 저장
문자열 변수명.split()

#기준이 없이 문자열 나누기 : 원하는 기준으로 잘려서 리스트에 저장
문자열 변수명.split(원하는 기준 넣기)
#기준이 없는 경우
text_1 = '문자열은 split를 이용하여 원하는 기준대로 리스트로 만들 수 있다 '
print(text_1.split()) 

#기준이 있는 경우
text_2 = '파이썬:3241:23:565:안녕:6:1'
print(text_2.split(':')) 


#출력 결과
['문자열은', 'split를', '이용하여', '원하는', '기준대로', '리스트로', '만들', '수', '있다']
['파이썬', '3241', '23', '565', '안녕', '6', '1']