본문 바로가기
Python

파이썬 리스트

by 승환파크 2023. 5. 8.

여러 가지 자료들을 저장할 수 있는 자료형 중 하나이다.

지금까지 활용한숫자, 문자, 수식 등이 개별적인 자료라면, 리스트는 이런 자료들을 모아서 사용할 수 있게 해주는 특별한 형태의 자료형이다.

리스트를 생성하는 방식 : 대괄호에 자료를 쉼표(,)로 구분해서 입력한다.

리스트 구조 : [요소1, 요소2, 요소3, 요소4...]

대괄호 내부에 넣는 자료를 요소(element) 라고 한다.

# 숫자만으로 구성된 리스트
listNum = [1, 2, 3, 4]

# 문자열만으로 구성된 리스트
listStr = ["a", "b", "c"]

# 여러 자료형으로 구성된 리스트
listMix = [273, 32, 103.243, "문자열", True, False]

# 리스트의 인덱싱, 슬라이싱
listNum[0]
# 결과값
# 1

listNum[-1]
# 결과값
# 4

 

이중 리스트

# 이중 리스트
li = [1, 2, 3, ["a", "b", "c"]]

print(li[-1])
# 결과값
# ['a', 'b', 'c']

print(li[-1][0])
# 결과값
# a

print(li[:3])
# 결과값
# [1, 2, 3]

 

리스트 연산

문자열에 적용할 수 있는 연산자는 리스트에도 활용할 수 있다.

# 리스트 병합
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
# 결과값
# [1, 2, 3, 4, 5, 6]

# 리스트 반복
print(a * 2)
# 결과값
# [1, 2, 3, 1, 2, 3]

 

리스트 수정 및 삭제

li = [1, 2, ,3, ["a", "b", "c"]]

# 요소를 인덱스로 삭제
del li[-1] # 슬라이싱도 사용 가능
print(li)
# 결과값
# [1, 2, 3]

# 수정
li[2] = 4
print(li)
# 결과값
# [1, 2, 4]

# remove 함수를 이용한 삭제
# remove 함수는 자신이 지우고싶은 value 값을 지정해서 지워야한다.
li.remove(4)
print(li)
# 결과값
# [1, 2]

# remove 함수는 리스트에서 첫 번째로 나오는 특정 요소를 삭제하는 함수
li = [1, 2, 3, 1, 2, 3]
li.remove(3)
print(li)
# 결과값
# [1, 2, 1, 2, 3]

# pop 함수를 이용한 삭제
# 제거할 위치를 입력하지 않으면 기본값(-1)을 적용해서
# 리스트의 맨 마지막 요소를 '반환'하고 해당 요소를 삭제
li = [1, 2, 3]
li.pop()
# 3
print(li)
# 결과값
# [1, 2]

# 특정 인덱스의 요소를 반환하는 것도 가능
li.pop(0)
# 1
print(li)
# 결과값
# [2]

 

리스트 관련 함수

1. append()

리스트 뒤에 요소를 추가할 때 사용하는 메서드이다.

li = [2]
li.append(5)
print(li)
# 결과값
# [2, 5]

li.append([1, 2, 3])
print(li)
# 결과값
# [2, 5, [1, 2, 3]]

 

2. insert()

괄호 안에서 정한 위치에 요소를 삽입하는 메서드이다.

해당 위치의 요소의 위치(index)는 뒤로 한칸씩 밀린다.

li = [1, 2, 3]
# 앞의 파라미터는 index, 뒤의 파라미터는 추가될 값
li.insert(0, 4)
print(li)
# 결과값
# [4, 1, 2, 3]

 

3. extend()

리스트 뒤에 새로운 리스트의 요소를 모두 추가할 떄 사용하는 메서드이다.

한 번에 여러 요소를 추가하고 싶을 때 주로 사용한다.

li = [4, 1, 2, 3]
li.extend([4, 5])
print(li)
# 결과값
# [4, 1, 2, 3, 4, 5]

 

4. index()

파라미터로 찾고싶은 값(value)을 넣고 그 값의 위치(index)가 어디인지 알고싶을 때 사용하는 메서드이다.

리스트에서 index의 값은 0부터 시작한다.

li = [1, 2, 3]
li.index(3)
# 결과값
2

 

5. count()

리스트에 포함된 요소의 갯수를 알고싶을 때 사용하는 메서드이다.

li = [1, 2, 3, 1]
li.count(1)
# 결과값
# 2

 

6. len()

리스트의 전체 길이를 알고싶을 때 사용하는 메서드이다.

li = [1, 2, 3, 1]
len(li)
# 결과값
# 4

 

7. clear()

리스트 내부의 모든 요소를 제거하고 싶을 때 사용하는 메서드이다.

li = [1, 2, 3]
li.clear()
print(li)
# 결과값
# []

 

리스트 연결 연산자와 리스트 확장의 차이

공통점 : 리스트 연결 연산자와 extend()함수는 리스트와 리스트를 연결해주는 비슷한 형태로 동작 한다.

차이점 : 리스트 연결 연산자(+)는 원본 리스트에 아무런 영향을 주지않지만(비 파괴적) extend()함수는 원본 리스트에 직접적인 영향을 준다.(파괴적)

기본적으로 자료는 비 파괴적으로 사용하는 것이 좋다.

왜냐하면 원본으로도 활용할 수 있고, 새로운 결과도 활용할 수 있으므로 선택지가 더 넓기 때문이다.

따라서 기본 자료형(숫자, 문자열, 불)과 관련된 것들은 비 파괴적으로 작동한다.

하지만 리스트는 용량이 매우 커질 수 있기 때문에 원본 리스트와 결과 리스트 두가지 상태를 다 생성하는 것은 위험할 수 있다.

이런 경우 원본 데이터를 직접 조작해서 위험을 회피해야 한다.

 

리스트 정렬

1. 리스트 오름차순 정렬

li = [1, 4, 3, 2]

li.sort()
print(li)
# 결과값
# [1, 2, 3, 4]

 

2. 리스트 내림차순 정렬

li = [1, 4, 3, 2]

li.sort(reverse = True)
print(li)
# 결과값
# [4, 3, 2, 1]

 

3. 리스트 뒤집기

# reverse() : 파괴적
li = ["a", "c", "b", "d"]
li.reverse()
print(li)
# 결과값
# ['d', 'b', 'c', 'a']

 

4. 슬라이싱 방식

li = ['d', 'b', 'c', 'a']
# 슬라이싱 방식 : 비파괴적
# li[시작:종료:증감값]
li[::-1]
# 결과값
# ['a', 'c', 'b', 'd']

print(li)
# 결과값
# ['d', 'b', 'c', 'a']

'Python' 카테고리의 다른 글

파이썬 딕셔너리  (0) 2023.05.08
파이썬 튜플  (0) 2023.05.08
파이썬 컬렉션  (0) 2023.05.08
파이썬 변수  (0) 2023.05.08
파이썬 불 자료형  (1) 2023.05.08