리스트는 여러 개의 데이터르 연속적으로 담아 처리하기 위해 사용할 수 있다.
파이썬의 리스트 자료형은 C나 자바와 같은 프로그래밍 언어의 배열 기능을 포함
내부적으로는 연결리스트 자료구조를 채택 하고 있어
append(), remove()등의 메서드를 지원한다.
리스트는 대괄호([]) 안에 원소를 넣어 초기화하며, 쉼표(,)로 원소를 구분한다.
a=[1,2,3,4,5,6,7,8,9]
print(a) #[1,2,3,4,5,6,7,8,9]
#인덱스 4 즉 다섯 번쨰 원소에 접근
print(a[4]) #5
#빈 리스트 선언 방법 1
a = list()
print(a) #[]
#빈 리스트 선언 방법 2
a=[]
print(a) #[]
인덱스값을 입력하여 리스트의 특정한 원소에 접근하는 것을 인덱싱이라고 한다.
파이썬의 인덱스값은 양의 정수와 음의 정수를 모두 사용할 수 있으며, 음의 정수를 넣으면 우너소를 거꾸로 탐색하게 된다.
a=[1,2,3,4,5,6,7,8,9]
print(a) # [1,2,3,4,5,6,7,8,9]
#뒤에서 첫 번째 원소 출력
print(a[-1]) #9
#뒤에서 세 번쨰 원소 출력
print(a[-3]) # 7
#네 번째 원소 값 변경a
a[3]=7
print(a) # [1,2,7,4,5,6,7,8,9]
#슬라이싱 대괄호 안에 추가 print(a[시작인덱스 : 끝인덱스])
# 끝인덱스의 경우 1을 뺸 값의 인덱스까지 처리 된다.
print(a[1:4]) #[2,7,4]
리스트 컴프리헨션은 리스트를 초기화하는 방법 중 하나이다
대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다.
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 ==1 ]
print(array)# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
#위에식을 일반적인 소스코드로 작성
array = []
for i in range(20):
if i % 2 ==1 :
array.append(i)
print(array) #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
#1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i*i for i in range(1,10)]
print(array) #[1, 4, 9, 16, 25, 36, 49, 64, 81]
#삼항연산자
#[true_value] if [condition] else [false_value]
numbers3 = [ 2 if i<4 else 3 for i in range(10) ]
#numbers3 = [2, 3, 2, 3, 2, 3, 2, 3, 2, 3]
print("numbers3 =",numbers3)
#리스트 컴프리헨션은 2차원 리스트를 초기화 할 떄 매우 효과적
# N * M 크기의 2차원 리스트 초기화
n=3
m=4
array =[[0] * m for _ in range(n)]
print(array) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
언더바역할
파이썬 자료구조/알고리즘에서는 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 떄 언더바(_)를 자주 사용한다.
for _ in range(5):
print("hello world")
a = [1,4,3]
print("기본 리스트:",a)
#리스트에 원소 삽입
a.append(2)
print("삽입",a)
# 오름차순 정렬
a.sort()
print("오름차순 정렬",a)
#내림차순 정렬
a.sort(reverse = True)
print("내림차순 정렬: ",a)
# 리스트 원소 뒤집기
a.reverse()
print("원소 뒤집기",a)
# 특정 인데스에 데이터 추가
a.insert(2,3)
print("인덱스 2에 3 추가:",a)
#특정 값인 데이터 개수 세기
print("값이 3인 데이터 개수:",a.count(3))
#특정 값 데이터 삭제
a.remove(1)
print("값이 1인 데이터 삭제:",a)
a = [1,2,3,4,5,5,5]
remove_set = {3,5}
#remove_set 에 포함되지 않은 값만을 저장
result= [ i for i in a if i not in remove_set]
print(result)
a = [1,2,3]
b=a[:] # 리스트 복사
a[1]=3
print(a) # [1,3,3]
print(b)#[1,2,3]