TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 기초>

[파이썬] 파이썬 기초: 자료형 - 리스트 자료형

by 기록자_Recordian 2024. 6. 14.
728x90
반응형
시작에 앞서
해당 내용은 '<Do it! 점프 투 파이썬> 박응용 지음. 이지스 퍼블리싱' 을 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.

 자료형

 

자료형이란 프로그래밍을 할 때 쓰이는 숫자, 문자열 등 자료 형태로 사용하는 모든 것을 뜻한다.

 

[자료형의 종류]


리스트 자료형

 

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

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

 

[다양한 리스트 유형]

list_a = []
list_b = [1, 2, 3]
list_c = ["life", "is", "too", "short"]
list_d = [1, 2, 'life', 'is']
list_e = [1, 2, ['life', 'is']]

print(list_a)
print(list_b + list_c)
print(list_d * 3)
print(list_c[0])
print(list_c[-1])

▶ list_a: 비어 있는 리스트 ※ 비어 있는 리스트는 a=list( ) 로도 생성 가능.

▶ list_b: 숫자를 요솟값으로 가지는 리스트

▶ list_c: 문자열을 요솟값으로 가지는 리스트

▶ list_d: 숫자와 문자열을 함께 요솟값으로 가지는 리스트

▶ list_e: 리스트 자체를 요솟값으로 가지는 리스트

※ 리스트 안에는 어떠한 자료형도 포함시킬 수 있다.

 


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

 

 

※ 삼중 리스트에서 인덱싱하기

리스트 'a' 안에 ['a', 'b', ['Life', 'is']] 리스트가 포함되어 있고, 그 리스트 안에 다시 ['Life', 'is'] 리스트가 있는 삼중 구조의 리스트인 경우,

'Life' 문자열만 끄집어내려면 

리스트 a의 세 번째 요소인 리스트 ['a', 'b', ['Life', 'is']]에서 세 번째 요소인 리스트 ['Life', 'is'] 의 첫 번째 요소를 입력하면 된다. → a[2][2][0]


리스트의 슬라이싱

 

# 리스트 슬라이싱
list_f = ["life", "is", "too", "short"]

print("인덱스 1의 위치:", list_f[1]) 
print("가장 마지막 위치:", list_f[-1]) 
print("인덱스 1에서 3까지:", list_c[1:4])
print("처음부터 인덱스 2까지:", list_c[:3])
print("인덱스 3부터 마지막까지:", list_c[3:])
print("두 개씩 건너뛰기:", list_c[::2]) # step (건너뛰기)
print("요소 거꾸로 뒤집기:", list_c[::-1]) #  reverse

 

# 리스트의 슬라이싱
a = [1, 2, 3, 4, 5]
print('a의 첫번째부터 두번째:', a[0:2])

# 문자열 슬라이싱
b = "12345"
print('b의 첫번째부터 두번째:', b[0:2])

 

Q. A = [1, 2, 3, 4, 5] 리스트에서 슬라이싱 기법을 사용하여 리스트 [2, 3] 출력

 

※ 중첩된 리스트에서 슬라이싱하기

a = [1, 2, 3, ['a', 'b', 'c'],4, 5]
print('a[2:5]:', a[2:5])
print('a[3]:', a[3])
print('a[3][:2]', a[3][:2])

▶ a[3]은 ['a', 'b', 'c']를 나타내므로, a[3][:2] 는 ['a', 'b', 'c']의 첫 번째 요소부터 세 번째 요소 직전까지의 값을 나타내는 리스트가 된다.

 

두 번째 콜론 다음에는 간격을 지정할 수 있으며, 값으로 '-1' 을 주면 역순으로 출력할 수 있다.

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

print(seq[:])
print(seq[::2]) # 2씩 건너뛰기
print(seq[::-1]) # 역순으로 출력

 


리스트 연산하기

 

리스트 역시 + 기호를 사용해서 더할 수 있고 * 기호를 사용하여 반복할 수 있다.

※ 리스트를 더하려면 서로 데이터 타입이 같아야 한다.

만약, 숫자와 문자열을 더하고 싶다면 숫자를 문자형으로 바꿔준 후에 더하면 된다.


리스트의 수정과 삭제

 

리스트 요소 삭제 시에는 del 함수 이용.

★ 요소 여러개 한꺼번에 삭제하기 : 슬라이싱 기법을 사용


리스트 관련 함수

 

리스트 변수 이름 뒤에 '.' 를 붙여서 여러 가지 리스트 관련 함수를 사용할 수 있다.

# 리스트 관련 함수
list_a = []
list_b = [1, 2, 3]

# append : 추가
list_b.append(4)
print(list_b)
list_a.append(3)
list_a.append([10])
print(list_a)

# extend: 병합
list_b.extend([5, 6, 7])
print(list_b)

# insert : 끼워넣기
list_b.insert(1, 3) #1번 위치에 3을 넣어라
print(list_b)

# remove : 삭제
list_b.remove(3) # 첫번째로 나오는 값 삭제
print(list_b)

# pop: 제일 마지막에 있는 요소 삭제
# pop(n): 인덱스에 있는 요소 삭제
list_b.pop()
print(list_b)
list_b.pop(2) # 2번 위치에 있는 요소 삭제
print(list_b)

# count: 리스트에 포함된 요소 수 세기
print(list_b.count(4)) # 4 개수 세기

# clear: 리스트 내 요소 모두 비우기
print(list_b.clear())

 

※ len을 이용하여 리스트의 길이를 셀 수 있다.

len(list_a)

 

◆ append; 리스트 요소 추가

append(x)는 리스트의 맨 마지막에 x를 추가하는 함수이다.

◆ sort: 리스트 정렬

 

또한, 정렬 기준(key)을 입력하여 정렬할 수도 있다.

list_f = ["life", "is", "short", "too"]
list_f.sort() # 사전 방식
print("알파벳 순서로 정렬:", list_f)

list_f.sort(key=len) # 길이 순으로 정렬
print("문자열 길이 순으로 정렬:", list_f)

 

※ (reverse=1 (또는 True) )을 입력하면 반대로 정렬해준다.

list_f = ["life", "is", "short", "too"]
list_f.sort(reverse=1) # 1대신 True도 가능
print("알파벳 순서 반대로 정렬:", list_f)

 

 

◆ reverse: 리스트 뒤집기

reverse 함수는 리스트를 역순으로 뒤집어 준다. (*순서 정렬 X)

 

◆ index: 위치 반환

index(x) 함수는 리스트에 x 값이 있으면 x의 위치 값을 돌려준다.

 

◆ insert : 리스트에 요소 삽입

insert(a, b) 는 리스트의 a 번째 위치에 b를 삽입하는 함수이다.

◆ remove; 리스트 요소 제거

remove(x) 함수는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다.

◆ pop: 리스트 요소 끄집어내기

pop()은 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.

 

pop(x)는 x 번째 요소를 돌려주고 그 요소를 삭제한다.

◆ count: 리스트에 포함된 요소 x의 개수 세기

count(x)는 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려준다.

◆ extend: 리스트 확장

extend(x)에서 x는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.

※ a.extend([4, 5]) 는 a+= [4, 5]와 동일


리스트를 일련번호로 구성하여 생성하기 (range)

 

list 함수와 range 함수를 사용하여 일정 범위 내의 숫자를 쉽게 생성할 수 있다.

range(x)에서 x까지로, x는 포함되지 않는다.

seq = list(range(10)) # 인자값을 리스트로 만들어줌
print(seq)

 

또한, 범위 및 간격을 지정하여 생성할 수도 있다.

seq = list(range(10, 20, 2)) # 10부터 19까지 2씩
print("seq:", seq)

print(seq[::2]) # 인덱스 2개씩 건너뛰기
print(seq[1::2]) # 인덱스 처음부터 끝까지 2개씩 건너뛰기
print(seq[::-2]) # 끝에서부터 2개씩 건너뛰며 오기


다음글

 

[파이썬] 파이썬기초: 자료형 - 튜플 자료형

시작에 앞서해당 내용은 ' 박응용 지음. 이지스 퍼블리싱' 을 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다. 자료형 자료형이란

puppy-foot-it.tistory.com

 

728x90
반응형