[파이썬] 리스트

2024. 8. 4. 15:32카테고리 없음

리스트 생성

 

많은 양의 데이터를 저장해야 하는 경우 리스트 자료형을 사용한다.

리스트 자료형은 변수명을 선언하고 대괄호 안에 , 를 사용해 데이터를 입력한다.

 

#변수명 = [데이터1, 데이터2, 데이터3]

user = ['고객1', '고객2', '고객3']
drink = ['콜라', '사이다', '오렌지쥬스']
price = [1200, 1200, 1000]
data = list()
data1 = [['고객1', '010-123-4567', 20], ['고객2', '010-222-3333', 22]]
data2 = [1, 2, 3, ['고객1', '고객2', '고객3']]

 

 

리스트 인덱싱

price = [100,200,300]
p1 = price[0]
p2 = price[-1]
print(p1, p2)

100 300

 

data = [['고객', '010-123-4567', 20], ['고객2', '010-222-3333', 22]] #리스트 안에 리스트
print(data[0]) #data리스트 안에 1번째 요소 가져오기
print(data[0][1]) #data리스트 안에 1번째 요소 안에 2번째 요소 가져오기

['고객', '010-123-4567', 20]

010-123-4567

 

 

리스트 인덱싱을 활용한 데이터 수정

price = [1, 200, 300]
price[0] = 100 #price리스트 안에 첫번째 값을 100으로 넣어라
print(price)

 

[100, 200, 300]

 

 

리스트 슬라이싱

week_sales = [10, 20, 10, 30, 40, 50, 30]
result = week_sales[0:3]
print(result)

 

[10, 20, 10]

 

 

슬라이싱을 이용해 데이터를 수정하기

 

week_sales = [10, 20, 10, 30, 40, 50, 30]
week_sales[0:3] = [100, 200, 300]
week_sales

 

[100, 200, 300, 30, 40, 50, 30]

 

리스트 연산

리스트는 더하기와 곱하기 연산자를 사용할 수 있다. 더하기는 결합의 의미

data1 = [1, 2, 3]
data2 = [4, 5, 6]
print(data1 + data2)

 

[1, 2, 3, 4, 5, 6]

 

곱하기 연산자는 데이터를 곱한 만큼 반복해서 더해준다.

data = [1, 2, 3]
print(data*3)

[1, 2, 3, 4, 5, 6]

 

 

리스트에서 자주쓰이는 함수

 

append()

리스트 뒤에 데이터를 추가할 때 사용.

리스트.append(데이터) 형태로 사용

price = [1, 2, 3]
price.append(3)
price.append([10, 20, 30])
# price.append(10, 20, 30) TypeError: list.append() takes exactly one argument (3 given)
print(price)

 

[1, 2, 3, 3, [10, 20, 30]]

 

extend()

두 개의 리스트를 하나의 리스트로 만들 때 사용한다. 리스트로 .extend(리스트) 형태로 사용

price = [1, 2, 3]
price.extend([4, 5, 6])
price

[1, 2, 3, 4, 5, 6]

 

insert()

리스트의 특정 인덱스 위치에 데이터를 추가할 때 사용한다.

리스트.insert(인덱스, 데이터)의 형태로 사용한다.

price = [1, 2, 3]
price.insert(1, 10)
print(price)

[1, 10, 2, 3]

 

remove()

리스트의 데이터를 삭제할 때 사용한다. 리스트.remove()의 형태로 사용한다.

리스트에서 첫 번째로 찾은 데이터를 삭제한다.

drink_name = ['콜라', '사이다', '콜라', '오렌지주스']
drink_name.remove('콜라')
print(drink_name)

['사이다', '콜라', '오렌지주스']

 

pop()

리스트에서 맨 마지막 데이터를 가져온 후 삭제한다.

가지고 온 데이터는 변수 등에 저장해서 사용. 리스트.pop()의 형태로 사용한다.

price = [1, 2, 3]
data = price.pop()
print(price)
print(data)

[1, 2]

3

 

 

리스트 컴프리핸션의 기본 구조

 

[expression for item in iterable if condition]

 

expression은 각 항목에 대해 계산되거나 변환되는 값

item은 현재 반복중인 요소

iterable은 반복 가능한 객체(리스트, 튜플, 문자열 등)

if condition 은 선택 사항으로 조건이 참을 때만 항목이 포함된다.

 

예시

기본 리스트 컴프리핸션: 주어진 리스트의 각 요소를 제곱한 값을 갖는 새로운 리스트를 만든다.

 

numbers = [1, 2, 3, 4, 5]
squares = [n ** 2 for n in numbers]
print(squares)

 

[1, 4, 9, 16, 25]

 

 

조건을 포함한 리스트 컴프리핸션

 

주어진 리스트에서 짝수만 포함하는 새로운 리스트

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [n for n in numbers if n % 2 == 0]
print(even_numbers)

[2, 4, 6]

 

 

주어진 리스트의 각 문자열에서 'pie'를 'cake'로 대체한다.

desserts = ['apple pie', 'banana pie', 'cherry pie']
new_desserts = [dessert.replace('pie', 'cake') for dessert in desserts]
print(new_desserts)

['apple cake', 'banana cake', 'cherry cake']

 

 

중첩된 리스트 컴프리핸션

 

2차원 리스트의 모든 요소를 1차원 리스트로 평탄화한다.

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat_list = [num for row in matrix for num in row]  #flat_list 안에 담아라 num들을, matrix안에 row를 반복, row 안에 num 들에 대해. 
print(flat_list)

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

 

 

딕셔너리 컴프리핸션

 

키와 값의 조건을 바탕으로 새로운 딕셔너리를 생성한다.

fruits = {'apple':1, 'banana':2, 'cherry':3}
new_fruits = {key:value for key, value in fruits.items() if value > 1}
print(new_fruits)

{'banana' : 2, 'cherry' : 3}