[Python] 파이썬 초보 탈출하자 #4 리스트 (下)

bokyungkim·2021년 11월 13일
1

리스트 함수

추가하는 함수

  • append(x)
    리스트 맨 마지막에 전달 인자를 추가한다.
  • insert(x, y)
    리스트의 x번째 위치에 y 값을 추가한다. 한 번에 하나씩 추가할 수 있다.
  • extend(x)
    기존 리스트에 x를 합친다. 전달 인자에는 리스트만 입력 가능하다.
numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
print(numbers)

numbers.insert(3, [11, 12, 13])
print(numbers)
# [2, 4, 6, [11, 12, 13], 8, 10, 1, 3, 5, 7, 9]

#append와 extend의 차이
numbers.extend(['a', 'b', 'c'])
print(numbers)
# [2, 4, 6, [11, 12, 13], 8, 10, 1, 3, 5, 7, 9, 'a', 'b', 'c']
numbers.append(['a', 'b', 'c'])
print(numbers)
# [2, 4, 6, [11, 12, 13], 8, 10, 1, 3, 5, 7, 9, 'a', 'b', 'c', ['a', 'b', 'c']]
  1. insert를 통해 하나의 값만 넣을 수 있는 것은 분명하다. 단, 하나의 값에는 리스트 또한 가능하다.
  2. append로 리스트값을 넣으면 리스트 또한 하나의 값으로 처리되지만, extend로 리스트값을 넣으면 리스트 괄호가 풀리고 그 리스트 안에 포함되었던 요소의 개수만큼 값이 입력된다.

삭제하는 함수

  • remove(x)
    리스트에서 가장 처음 나오는 x값을 삭제한다. 전달 인자를 리스트에서 찾을 수 없다면 오류가 발생한다.
  • pop()
    리스트의 마지막 요소를 반환한 뒤 리스트에서 삭제한다.
numbers = [2, 4, 6, 8, 1, 3, 5, 7]
print(numbers)

numbers.insert(3, [11, 12, 13])
print(numbers)
# [2, 4, 6, [11, 12, 13], 8, 1, 3, 5, 7]

numbers.remove(3)
print(numbers)
# [2, 4, 6, [11, 12, 13], 8, 1, 5, 7]
print(numbers.pop())
# 7
print(numbers)
# [2, 4, 6, [11, 12, 13], 8, 1, 5]

정렬하고 순서를 바꾸는 함수

  • sort()
    리스트의 요소를 순서대로 정렬한다. 전달 인자가 필요없다.
  • reverse()
    리스트의 순서를 반대로 뒤집는다. 전달 인자가 필요없다.
evennumbers = [2, 4, 6, 8]
oddnumbers = [1, 3, 5, 7]
print(evennumbers, oddnumbers)
# [2, 4, 6, 8] [1, 3, 5, 7]

numbers = evennumbers + oddnumbers
print(numbers)
# [2, 4, 6, 8, 1, 3, 5, 7]

numbers.sort()
print(numbers)
# [1, 2, 3, 4, 5, 6, 7, 8]

numbers.reverse()
print(numbers)
# [8, 7, 6, 5, 4, 3, 2, 1]

리스트의 정보를 알아내는 함수

  • index(x)
    전달 인자가 리스트 안에 있으면 해당 요소의 인덱스 값을 반환한다. 전달 인자를 리스트에서 찾을 수 없다면 오류가 발생한다.
  • count(x)
    리스트에 있는 x값의 개수를 반환한다.
numbers = [1, 6, 7, 3, 5, 6, 8, 3, 3]

print(numbers.index(6))
# 1
print(numbers)
print(numbers.count(3))
# 3

len() 함수

값의 길이(개수)를 알 수 있는 함수

list1 = [2,5,2,0,1]
list2 = [4,1,2]

list1.append(list2)
print(list1, len(list1))
# [2, 5, 2, 0, 1, [4, 1, 2]] 6

파이썬 함수들은 다른 언어에 비해 굉장히 직관적이고 간결하다. 또한, 리스트는 파이썬 프로그래밍을 할 때 꽤 자주 쓰이므로 리스트 함수를 많이 연습할 것을 추천한다.

리스트의 심화 개념 : 값 할당

파이썬은 사람의 직관에 조금 더 친화적인 언어이므로 리스트는 컴퓨터의 구조에 대해 이해하지 못한 사람도 직관적인 사용을 할 수 있도록 지원한다. 이렇게 부드러운 용법을 가진 리스트도 한 가지 엄격한 개념이 있다. 바로 선언과 값의 할당에 관한 용법이다.

리스트를 선언하고 사용하는 방법은 두 가지가 있다.
1. a = [] 혹은 a = list() 형식으로 빈 리스트 생성
2. a = [1, 2, 3, 4, 5] 혹은 a = list([1, 2, 3, 4, 5]) 형식으로 리스트 생성과 동시에 값 할당

1번 상황의 경우

drawer = []
drawer[0] = "양말"

위와 같이 빈 리스트를 먼저 생성하고 값을 초기화하는 것은 불가능하다. 리스트값의 개수와 값을 초기화하지 않고 빈 리스트만 선언했다면 공간을 마련하고 값을 하나씩 추가해야 한다. 따라서 아래와 같이 코드를 작성해야 오류가 발생하지 않는다.

drawer = []
drawer.append("양말")
print(drawer, drawer[0])
# ['양말'] 양말

만약 여러 값을 한 번에 추가하고 싶다면 extend() 함수를 사용하면 된다.

drawer = []

drawer.append("양말")
print(drawer, drawer[0])
# ['양말'] 양말

drawer.extend(["속옷", "모자", "반팔", "바지"])
print(drawer)
# ['양말', '속옷', '모자', '반팔', '바지']

이번엔 2번 상황을 보자.

drawer = ["양말", "속옷", "모자", "반팔", "바지"]
print(drawer)
# ['양말', '속옷', '모자', '반팔', '바지']

위와 같을 때, drawer[5]drawer[6]에는 접근이 불가하다. 이는 1번 상황과 같은 맥락이다. 순차적으로 추가를 해야만 접근 가능하다.

drawer = ["양말", "속옷", "모자", "반팔", "바지"]

del drawer[3]
print(drawer)
# ['양말', '속옷', '모자', '바지']

drawer[3] = ""
print(drawer)
# ['양말', '속옷', '모자', '']

drawer[3] = "점퍼"
print(drawer)
# ['양말', '속옷', '모자', '점퍼']

del 키워드를 사용하면 칸 자체를 삭제한다. 여기서 주의할 점은 drawer[3] = "" 이다. 인덱스 3에 빈칸을 할당하는 것이지 drawer[3] 값 자체를 삭제하는 것이 아니기 때문에 drawer[3]은 존재하는 것이다.


이 글은 goorm edu의 한 눈에 끝내는 파이썬3 기초 강좌를 참고하여 작성되었습니다.

0개의 댓글