티스토리 뷰

📌 [리스트]

배열처럼 여러 값을 한 번에 저장하기 위해 리스트를 사용한다.

리스트는 말 그대로 목록이라는 뜻이고, 값을 일렬로 늘어놓은 형태이다. 

 

📍  데이터 형에 상관없이 여러 값을 저장할 수 있다 = 모든 객체의 시퀀스

📍  리스트와 리스트 사이의 덧셈이 가능하다. ( extend메서드와 같은 역할 )

📍  리스트 명으로 출력 시 [대괄호]까지 출력된다. 

📍  첨자를 사용해 리스트에 저장된 값에 접근할 수 있다 (리스트 길이보다 큰 index를 사용하려고 하면 에러 발생)

 


👉  리스트 만들기 (리스트 패킹)

✔  리스트 패킹 : 여러 데이터를 리스트로 묶는 것 ↔ 리스트 언패킹 : 리스트로 묶은 데이터 뿌리기

listA = [ 1, 2, 3, 4, 5 ]
profile = ['짱구', 5, '해바라기반', 130.5 ]

✔  리스트에 값을 저장할 때에는 대괄호로 묶어준다. 각 값은 콤마로 구분.

✔  슬롯(Slot) : 데이터를 저장하기위한 자리

✔  요소(Element) : 슬롯에 저장된 개별 데이터

 

✔  모든 객체의 시퀀스 = 모든 객체를 요소로 받을 수 있다 (함수, 튜플, 리스트, 변수, 정수 등... )

✔  시퀀스 자료형(sequence types) : 리스트, 튜플, range, 문자열처럼 값이 연속적으로 이어진 자료형

fruit = ['apple', 'banana', 'orange']
numbers = list(range(10))

str = input()           #hello 입력
list_str = list(str)    #문자열을 list로 형변환해서 저
print(list_str)         #['h', 'e', 'l', 'l', 'o'] 출력 

✔  대괄호를 사용해서 리스트를 생성하기도 하고

✔  list로 형 변환해서 리스트를 생성, 데이터를 저장할 수 도 있다.

listB = []
listC = list()

print(listB)	#[]
print(listC)	#[]

✔  대괄호에 값을 넣지 않거나 list()만 사용하면 비어있는 리스트를 만들 수 있다.

listD = list(range(10))
print(listD) #[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

listE = list(range(5,12,2))
print(listE) #[ 5, 7, 9, 11 ]

listE = list(range(12,2,-3))
print(listE) #[12, 9, 6, 3 ]

✔  range()는 연속된 숫자를 생성하는 함수.

✔  list의 크기에 정수 대신, range(10)을 넣으면 0~9의 값이 저장된 리스트가 만들어진다.

✔  range()에 인수를 하나만 사용하면 0부터~end로 인식.

✔  range()에 start값과 end, step을 지정해주면 조건에 맞는 값이 저장된다.

 

👉  리스트 언패킹

list = [1,2,3]
#n1, n2 = list 		#ERROR!
n1, n2, n3 = list

print(list)
print('n1 = {0}, n1 = {1}, n1 = {2}'.format(n1,n2,n3))

✔  [리스트]의 데이터를 변수 여러개에 한번에 저장할 수 있다.

✔  언패킹할 요소의 수가 불일치하면 오류가 발생하니 주의하자

 

👉 리스트를 조작하는 메서드

  메서드 설명
추가
.append()    마지막 요소의 뒤에 요소 하나 추가
.insert()    특정 위치(index)에 요소 추가
.extend()    마지막 요소의 뒤에 또 다른 리스트 연결하여 결합
+    메서드는 아니지만, 더하기 연산을 통해 결합 가능
삭제 .pop()    특정 위치의 요소 삭제
del 리스트[idx]    특정 위치의 요소 삭제
.remove()    특정 값을 가지는 요소 삭제
.clear()    모든 요소 삭제
검색 .index()    특정 값을 가진 요소 중 가장 첫번째의 요소의 인덱스 
.count()    특정 값을 가진 요소 개수 세기
정렬
.sort()    요소를 오름차순으로 정렬
sorted(리스트)    요소를 오름차순으로 정렬 (정렬된 새로운 리스트를 반환)
.reverse()    요소의 순서를 역순으로 변경
길이 len(리스트)    길이 (요소의 개수) 구하기

 

👉 리스트 : 추가 메서드

1. append()

listA = [ 0, 1, 2, 3, 4 ]

#append : 요소 하나를 추가
listA.append(100)
print(listA)

✔  리스트명.append(요소)는 리스트 마지막 idx에 요소를 하나 추가한다.


2. insert()

listA = [ 0, 1, 2, 3, 4 ]

#insert : 특정 인덱스에 요소 추가
listA.insert(3, 100)
print(listA)

listA.insert(len(listA),[200,300])
print(listA)

✔ insert() 메서드는 인수를 2개 가지며, 첫 번째 인수는 index를 의미하고 두 번째 인수는 해당 index에 저장할 값을 의미한다.

✔ 리스트 마지막 인덱스 뒤에 요소를 추가할 때에는, 첫 번째 인수에 len()을 사용하는 편을 추천.

✔ 리스트 내부에 또 다른 리스트를 추가할 수도 있으며, 이는 중첩 리스트라고 한다.

✔ 중첩 리스트는 말하자면 트리(Tree)구조를 가진다.

listA = [ 0, 1, 2, 3, 4 ]

listA[0:2] = [100,200]
print(listA)

listA[0:4] = [100,200]
print(listA)

listA[1:1] = [500,600]
print(listA)

✔ 리스트명과 첨자를 사용해 원하는 지점을 지정, 새로운 값을 추가할 수 있다.

기본적으로 첨자를 사용한 데이터의 추가는 덮어쓰기를 의미한다.

✔ 첨자 내부에 start와 end의 값이 동일하면, 해당 위치의 요소를 덮어쓰지 않으면서 요소를 중간에 추가할 수 있다.

✔ end 위치는 포함되지 않으므로, 첨자를 [0:5] 형태로 사용하면 index 0부터 4까지를 의미한다.

✔ 첨자의 범위에 비해 값의 개수가 적다면, 해당 첨자 범위의 값은 모두 삭제되고 입력한 값이 저장된다.


3. extend()

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

#extend : 리스트를 연결하여 확장
listA.extend(listB)
print(listA)

✔  extend 메서드를 호출한 리스트의 뒤에 인수로 받아온 리스트를 연결한다.

✔  listB를 물리적으로 가져와 listA의 뒤에 붙이는 것이 아니라, listB의 값을 복사해서 저장하는 역할을 한다.

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

# + 연산자를 사용한 결합
listC = listA+listB
print(listC)
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

✔  더하기 연산자를 사용해 extend메서드처럼 리스트를 결합할 수 있다.

 

👉 리스트 : 삭제 메서드

1. pop(), del arr[idx]

listA = [ 0, 1, 2, 3, 4 ]

listA.pop()
print(listA)

listA.pop(0)
print(listA)

del listA[2]
print(listA)

✔  pop() 은 마지막 요소를 하나 삭제하는 메서드이며, 특정 인덱스를 지정해 삭제할 수 도 있다.

✔  del 키워드와 첨자를 사용해서 원하는 위치의 요소를 하나 삭제할 수 있다. pop()과 같은 기능을 수행한다


2. remove()

listA = [ 0, 1, 2, 3, 4, 2 ]

listA.remove(2)
print(listA)

✔  remove() 메서드를 사용하면 특정 값을 찾아 리스트에서 삭제할 수 있다.

✔  같은 값의 요소를 여러개 가진다면, 가장 처음 찾은 인덱스의 값만 삭제한다.


3. clear()

listA = [ 0, 1, 2, 3, 4, 2 ]

listA.clear()
print(listA)

✔  리스트 내부의 모든 값을 삭제한다.

 

👉 리스트 : 검색 메서드

1. index()

listA = [ 0, 1, 2, 3, 4, 2, 2 ]

idx = listA.index(2)
print(idx)

✔  index() 메서드는 리스트에서 특정 값의 인덱스를 구한다. 같은 값이 여러 개인 경우 처음 찾은 인덱스를 반환한다.


2. count()

listA = [ 0, 1, 2, 3, 4, 2, 2 ]

cnt = listA.count(2)
print(cnt)

✔  count() 메서드는 리스트에서 특정 값의 개수를 구한다. 

 

👉 리스트 : 정렬 메서드

1. sort()

listA = [ 60, 10, 200, 37, 34, 72, 322 ]

listA.sort()
print(listA)

✔  sort() 메서드는 리스트의 요소들을 작은 순서대로 정렬한다 (오름차순)

listA = [ 60, 10, 200, 37, 34, 72, 322 ]

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

✔  sort() 메서드에 인자를 reverse = True를 넣으면 역순으로 정렬하라는 의미이다. (내림차순)


2. reverse()

listA = [ 60, 10, 200, 37, 34, 72, 322 ]

listA.sort()
print(listA)

listA.reverse()
print(listA)

✔  reverse() 메서드는 리스트의 요소의 순서를 반대로 뒤집는다.


3. sorted() 함수

listA = [ 60, 10, 200, 37, 34, 72, 322 ]

listB = sorted(listA)

print(listA)
print(listB)

✔  내장 함수 sorted 는 정렬을 한 뒤, 새로운 리스트를 생성한다. 어딘가에 저장하지 않으면 사용할 수 없다.

 

👉 리스트 : 슬라이싱 사용하기

1. 슬라이싱

listA = [ 60, 10, 200, 37, 34, 72, 322 ]

listA[len(listA):] = [500]
print(listA)

✔  리스트는 메서드 없이 슬라이싱로 조작할 수 있다.

✔  위와 같이 대괄호 안에서 len()을 사용해 마지막 요소+1 index에 새로운 리스트를 추가할 수 있다.

 

👉 리스트 : 반복문에서 사용하기

numbers = [ 1,2,3,4,5,6,7,8 ]

#for문
for i in numbers :
	print(i, end=' ')

print()

#while문
length = len(numbers)
i = 0
while i<length :
	print(numbers[i], end=' ')
	i+=1

 

👉 2차원 리스트

num = [ [2,3,4,5] , [6,7,8,9] ]

print(num[0])		#[2,3,4,5]
print(num[1])		#[6,7,8,9]
print(num[0][0])	# 2
print(num[1][0])	# 6

✔  파이썬에서도 부분 배열명을 사용할 수 있다. 부분 배열명을 사용하면 해당 1차원 배열에 접근할 수 있다.

 

※참고※

백슬래쉬는 개행되었으나 연속된 내용임을 말하는 기호

 

 

 

 

 

[참고] 엘리스 트랙-혼자 공부하는 파이썬 / 길벗-파이썬 코딩 도장 / 엘리스 트랙 - 예제 중심의 파이썬 입문 / 위키백과

댓글
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday