집합형 자료형 중, 리스트에 대한 설명입니다.
리스트는 대괄호 ([ ])로 표현합니다. 순서가 존재하며, 중복 또한 허용됩니다.
그리고 값 변경 또한 가능한 데이터형입니다. (mutable)
"""
집합형 자료형
1) 문자열
2) 리스트
a. 리스트 생성 방법
(1) [] 직접 사용
(2) list(집합형)
b. 리스트 제공 함수
c. 인덱싱 및 슬라이싱
d. 리스트 특징
- [] 표현
- 순서 존재, 중복 허용
- 값 변경 가능 ( mutable )
"""
리스트는 대괄호를 [ ] 직접 사용하여 생성할 수 있으며 list(집합형 데이터)로도 사용 가능합니다.
# 1. 리스트 생성
str_list = ["홍길동", "이순신"]
int_list = [10, 10, 20]
empty_list = []
xxx = list("hello") #문자열 리스트로 변환
xx2 = list((100, 100, 200)) # 튜플 리스트로 변환
mixed_list = [10, 'abc', 2.34] # 자주 사용하는 형태는 아님, mixed list
리스트도 문자열과 같이 인덱싱(indexing)과 슬라이싱(slicing)이 가능합니다.
"""
집합형 자료형
1) 문자열
2) 리스트
a. 리스트 생성 방법
(1) [] 직접 사용
(2) list(집합형)
b. 리스트 제공 함수
c. 인덱싱 및 슬라이싱
==> 문자열의 인덱싱, 슬라이싱과 동일 (순방향, 역방향)
d. 리스트 특징
- [] 표현
- 순서 존재, 중복 허용
- 값 변경 가능 ( mutable )
e. 얕은 복사와 깊은 복사 (call by value, call by reference)
"""
먼저, 인덱싱(indexing)입니다.
인덱싱은 특정 위치를 지정해서 값 하나만을 얻어내는 작업입니다.
변수명[위치값]으로 사용합니다.
추가로, 위치값을 -로 하여 뒤에서 부터 읽을 수 있습니다. 이때에 가장 뒤의 값은 변수명[-1]을 갖습니다.
#1. 인덱싱
n = [10, 20, 30, 30, 40, 50, 60]
print("1:", n[0]) #10
print("2:", n[3]) #30
print("3:", n[-1]) #60
print("4:", n[-3]) #40
print("="*100)
다음은 슬라이싱(slicing) 입니다.
슬라이싱(slicing)은 특정 범위를 지정하여 1개 이상의 값을 얻어내는 방법입니다.
변수명[start : end]로 시작 위치(start)와 끝 위치(end)를 정해주고 그 사이 값을 가져옵니다. ( start <= [변수] < end )
시작과 끝의 위치를 지정하여 start <= [변수] < end로 사용할 수도 있고
끝 위치만 사용해서 처음부터 끝까지, 시작 위치만 사용해서 시작 위치부터 끝까지 범위를 지정할 수 있습니다.
아무것도 지정하지 않으면 전체 데이터를 가져옵니다. 변수명[:]
추가로, step값을 지정하여 띄엄띄엄 값을 얻어낼수도 있습니다. 변수명 [ start : end : step ]
#2. 슬라이싱 ==> 범위지정해서 검색 방법
m = [10, 20, 30, 30, 40, 50, 60, 70, 70, 80, 90, 100]
# 가. 순방향: 앞에서부터 검색(양수 이동)
print("5:", m[0:5]) # [10, 20, 30, 30, 40]
print("6:", m[3:8]) # [30, 40, 50, 60]
print("7:", m[:8]) # [10, 20, 30, 30, 40, 50, 60, 70]
print("8:", m[:8]) # [10, 20, 30, 30, 40, 50, 60, 70]
print("9:", m[1:]) # [20, 30, 30, 40, 50, 60, 70, 70, 80, 90, 100]
print("10:", m[:]) # [10, 20, 30, 30, 40, 50, 60, 70, 70, 80, 90, 100]
print("11:", m[0:5:2]) # [10, 30, 40]
print("="*100)
# 나. 역방향: 뒤에서부터 검색 (음수 이동)
# m = [10, 20, 30, 30, 40, 50, 60, 70, 70, 80, 90, 100]
print("12:", m[-5:-1]) # [70, 70, 80, 90]
print("13:", m[-5:]) # [70, 70, 80, 90, 100]
print("15:", m[:-1]) # [10, 20, 30, 30, 40, 50, 60, 70, 70, 80, 90]
print("16: 역순(*****):", m[::-1]) # [100, 90, 80, 70, 70, 60, 50, 40, 30, 30, 20, 10]
print("="*100)
마지막으로, 중첩 리스트라는 것이 있습니다. 2중 리스트이지요.
리스트 안에 또다른 리스트가 있는 있는 리스트를 말합니다.
이런 중첩 리스트 역시 인덱싱(indexing)과 슬라이싱(slicing)이 가능합니다.
"""
먼저 이런 중첩 리스트가 있습니다.
이 중첩 리스트의 7 값을 인덱싱하여 출력하겠습니다.
"""
m = [1, 2, 3, [9, 8, 7, 6, 4]]
m2 = m[3] # [9, 8, 7, 6, 4]
# m2 = [9, 8, 7, 6, 4]
print(m2[2]) # 7
"""
위의 절차는 설명을 위해서 한 것이고
일반적으로는 위의 과정 없이 바로 중첩 리스트의 값을 인덱싱합니다.
"""
m = [1, 2, 3, [9, 8, 7, 6, 4]]
print(m[3][2]) # 7
"""
위에서 이미 중첩 리스트의 인덱싱 방법을 배웠기 때문에
슬라이싱은 쉬울 것입니다. 그냥 똑같이 하시면 됩니다.
하지만 이번엔 순방향 방법과 역방향 방법을 같이 보여드리겠습니다.
"""
m = [1, 2, 3, [9, 8, 7, 6, 4]]
# 질문2? 9, 8, 7, 6 값을 슬라이싱하여 출력하시오.
print(m[3][0:4]) # [9, 8, 7, 6] 순방향 슬라이싱
print(m[3][-5:-1]) # [9, 8, 7, 6] 역방향 슬라이싱
이미 문자열에서 인덱싱과 슬라이싱을 배웠기때문에 어렵지 않게 마무리할 수 있었습니다.
다음엔 리스트의 함수에 대해서 살펴보도록 하겠습니다.
그럼 이만~
'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글
0901_2일차_Python08_리스트_얕은복사_깊은복사 (0) | 2020.09.05 |
---|---|
0901_2일차_Python08_리스트_함수 (0) | 2020.09.05 |
0901_2일차_Python08_문자열3_인덱싱_슬라이싱 (0) | 2020.09.04 |
0901_2일차_Python08_문자열_함수 (0) | 2020.09.04 |
0901_2일차_Python08_문자열_생성방법_특징 (0) | 2020.09.04 |
댓글