Python/Python 시작하기

8. 파이썬 자료형 - 리스트 (list)

arvigoes 2019. 12. 14. 23:04

리스트?                                                              

리스트는 파이썬에서 문자열 만큼이나 자주 사용되는 자료형 입니다.

리스트는 여러 개의 자료를 하나의 변수로 관리할 때 사용 합니다. 여러개의 자료란 같은 타입의 자료일 수도 아닐 수도 있습니다. 이 부분이 정말 어렵게 느껴졌고 사용하면서도 햇갈렸던 부분인거 같네요

자세히 살펴 보도록 하겠습니다.

 

리스트 사용법                                                     

리스트를 만들 때는 대괄호([ ])로 감싸 주고 각 요솟값은 쉼표(,)로 구분해 줍니다.

리스트명 = [요소1, 요소2, 요소3, ...]

# Code 1

# list 선언

list_int = [1, 2, 3]
list_str = ["나는", "사과를", "먹었다"]
list_both = [1, 2, "사과", "바나나"]
list_conf = [1, 2, "과일", ["사과", "바나나"]]

첫번째 예제는 숫자만, 두번째는 문자만, 세번째는 숫자, 문자 모두, 네번째 예제는 숫자, 문자, 리스트 까지

다양한 자료형을 요소로 추가 할 수 있습니다.

리스트요소에 대한 타입 지정이 없어 다양한 타입도 한개의 리스트에 모두 넣을 수도 있습니다.

이게 정말 편하게 사용하려면 편하고 복잡하게 사용하면 정말 어렵습니다.

적당히 편할때까지만 사용하면서 리스트 관리능력 키워 나가는게 좋습니다.

 

리스트의 인덱싱과 슬라이싱___________________________

리스트 선언하는 대괄호([]) 보신적 있으시죠?

이전에 문자열 자료형 문자열 연산에서 많이 보셨었죠?

https://arvigoes.tistory.com/27

 

5. 파이썬 자료형 - 문자열 연산

파이썬은 문자열다루기가 정말 편한 언어중 하나입니다. 다른 언어에서 쉽게 찾아 볼 수 없는 재미 있는 기능이 많고, 쉽게 사용 가능 합니다. 문자열 연결하기 # Code 1 # 문자열 더하기 who = "내가" what = "사..

arvigoes.tistory.com

저기에도 인덱싱과 슬라이싱을 학습했었습니다.

자세히 기억 안나시는 분은 다시 한번 보시길 바랍니다.

리스트의 익덱싱, 슬라이싱과 스트링의 인덱싱, 슬라이싱은 기본적으로 동일 합니다.

이번에는 간단하게 복습 하는 형태로 넘어가도록 하겠습니다.

우선 인덱싱에서 가장중요한 길이 확인

# Code 2

# list 길이
#
list_int = [1, 2, 3]
print(len(list_int))

8-1. 길이확인

리스트이 길이는 len 이라는 함수를 통해 알아 옵니다.( 문자열 길이도 저 함수로 동일 합니다.)

우선 len 이라는 내장 함수가 있고 길이는 알아오는 것 정도로 알아 두시길 바랍니다.

 

길이를 알아 왔으니 인덱싱을 사용해 보도록 하겠습니다.

# Code 3

# list 선언

list_int = [1, 2, 3]
list_str = ["나는 ", "사과를 ", "먹었다"]
list_both = [1, 2, "키위를 ", "바나나를 "]
list_conf = [1, 2, "애플", ["오렌지를 ", "망고를 "]]

print(list_int[0])
print(list_int[-1])
print(list_int[1] + list_int[2])
print(list_str[0] + list_both[3] + list_str[2])
print(list_conf[3])
print(list_str[0] + list_conf[2] + list_conf[3][1]+ list_str[2])

8-2. Code 3 결과

이전에 인덱싱을 유심히 보셨다면 이해가 쉬우리라 생각 합니다.

그리고 문자열 포맷팅도 쓰려하다가 주제에 벗어나는거 같아 인덱싱으로 문장을 만들어 봤습니다.

 1. list_int[0]  :  리스트의 첫번째 요소

 2. list_int[-1]  :  list_int 리스트 제일 마지막 요소를 나타냅니다. 익덱스 -1 은 제일 마지막 요소를 나타 냅니다.

 3. list_int[1] + list_int[2]  :  두번재 & 세번째 요소를 더합니다.

 4. list_str[0] + list_both[3] + list_str[2] : 여러 리스트의 요소를 합쳐 문장을 만들어 냅니다.

 5. list_conf[3]  :  리스트 내에 리스트가 있습니다.

 6. list_str[0] + list_conf[2] + list_conf[3][1]+ list_str[2]  :  여러 리스트의 요소를 합쳐 문장을 만들어 냅니다.

 7. list_conf[3][1]  :  리스트 내의 리스트 를 인덱싱 합니다. (*중요)

 

리스트 내에 리스트가 들어 있다면 첫번째 인덱싱 list_conf[3][1]  3 으로 포함된 리스트를 지정하고 list_conf[3][1] 두번째 1 을 통해서 ["오렌지를 ", "망고를 "] 리스트중 두번째 요소 "망고를 " 을 지정 합니다.

리스트 내에 리스트뿐만 아니라 리스트 내의 스트링도 동일하게 인덱싱 할 수 있습니다.

print(list_str[1][1]) 이런 코드를 작성하면 "과" 가 결과로 출력 됩니다.

중요한 개념이니 잘 챙겨 두시길 바랍니다.

 

슬라이싱에선 특별한 내용이 없고 문자열 슬라이싱과 완전 동일하여서 기본 설명은 생략 하고

list_conf 처럼 중첩된 슬라이싱만 간략하게 소개 해 드릴게요

# Code 4

# list 스라이싱

list_conf = [1, 2, 3, ["나는 ", "사과를 ", "먹었다"], "키위를 ", "바나나를 "]
print( list_conf[2:5] )
print( list_conf[3][:2] )

8-3. 중첩 슬라이싱

인덱싱에서와 동일한 방식으로 슬라이싱 하시면됩니다.

list_conf[3][:2] 설명

변수뒤에 처음 나오는 대괄호([3])는 지정변수의 리스트를 가르키고(여기서는 list_conf) 그리고 두번째 대괄호([:2])는 첫밴째 대괄호([3]) 에서 지정한 리스트( ["나는 ", "사과를 ", "먹었다"]) 에서 3번째요소 이전까지 즉 첫번째 두번째요소 를 슬라이싱 하라는 내용입니다.

 

리스트 연산하기                                                  

리스트 역시 문자열 처럼 +, * 기호를 사용 더하거나 반복할 수 있습니다.

문자열과 마찬가지로 리스트에서도 동일하게 적용이 됩니다.

# Code 3

# list 연산

list_f = [1, 2, 3]
list_s = [4, 5, 6]
print( list_f + list_s)
print(list_f * 3)

8-4. 리스트 연산 결과

 

리스트 수정                                                      

리스트 수정은 간단합니다.

인덱싱을 통해 요소를 특정화 해서 변경 하시면 됩니다.

# Code 6

# list 수정
#
list_int = [1, 2, 3]
list_str = ["나는 ", "사과를 ", "먹었다"]

list_int[2] = 100
list_str[1] = "바나나를 "
print( list_int)
print(list_str)

8-5. 결과

어렵지 않으시죠?

중첩된 리스트도 마찬가지로 인덱싱만 잘 지정한다면 문제될것이 없습니다.

 

리스트 생성                                                      

# Code 7

# list 생성
# 초기화 생성
list_int = [1, 2, 3]
list_str = ["나는 ", "사과를 ", "먹었다"]
#별다른 타입지정없이 자동으로 리스트로 생성이된다.

# 비어 있는 리스트로 생성
list_init = list()

 

리스트 추가 & 삭제                                                      

이번에는 리스트 요소 삭제 인데 이것도 인덱싱 지정만 잘한다면 역시나 쉽습니다.

리스트에서 인덱싱이 얼마나 중요한지 잘 아시겠죠?

# Code 8

# list 요소 추가
# 빈 리스트 생성
list_empty = list()

# append 로 추가 (리스트의 제일 끝에 추가됨)
# append(value)
list_empty.append(1) 
list_empty.append(2) 
list_empty.append(3) 
list_empty.append(4) 
list_empty.append(5) 
# list_empty 에는 [1, 2, 3, 4, 5] 로 담기게 된다.

# insert 로 추가 
# insert(입력할 idex, value)
list_test = [1, 2, 3]
list_test.insert(1, 5)
# list_test 에는 [1, 5, 2, 3] 로 담기게 된다.

#

 

# Code 9

# list 요소 삭제
#
list_str = ["나는 ", "사과를 ", "먹었다"]

del list_str[1]
print(list_str)

## del 은 파이썬내장 함수로 지정된 요소(객체)를 삭제합니다.
## 우선은 이정도로만 이해 하시면 추후에 또 나올대 좀 더 설명하도록 하겠습니다.

8-6. 요소삭제

 

리스트 튜플 추가                                                      

# Code 10

# list 요소 삭제
#
list_tuple = [(1,2), (3,4)]

list_tuple.append((5,6))

tmp_tup = (7,8)
list_tuple.append(tmp_tup)

 

 

인덱싱이 잘 되니 어렵지 않습니다.

del list_str[1:] 이런식으로 슬라이싱도 가능 합니다.

 

 

 

이외에도 리스트에 관련된 많은 함수들과 기능들이 있는데 이에 대해서는 추후 함수에 대해 학습후 리스트나 기타 공용 함수, 동작 들을 다뤄 보도록 하겠습니다.

인덱스의 중요성 다시 한번 강조하고 마치도록 하겠습니다.