코딩테스트를 위한 파이썬 메서드 정리

Jong.-.HANA·2023년 7월 10일

메서드

1. 리스트

.append()
.pop(index)
.sort()
.reverse()
.insert(인덱스위치,값)
.extend(반복 가능한 개체)
.count(n)
.index(n)
  • .append()
    리스트의 맨 뒤에 요소를 삽입
# .append()

my_list = [3,4,5,6]
my_list.append(1)

my_list
#[3, 4, 5, 6, 1]
  • .pop(index)
    리스트에서 인덱스 위치에 해당하는 원소를 추출한 후 반환합니다.
# .pop(index)

my_list = [3,4,7,1,8]
my_list.pop()

my_list
#[3,4,7,1]

my_list2 = [7,5,3,9,1]
my_list2.pop(2)
  • .sort()
    작은 수부터 차례로 정렬합니다. key 옵션을 통해 기준을 선택할 수 있습니다.
# .sort()

my_list = [4,6,11,3,8,1]
my_list.sort()
my_list
#[1, 3, 4, 6, 8, 11]

# 만약 역순으로 정렬하고 싶은 경우? key 옵션과 익명함수 lambda를 활용합니다.
# nums.sort(key=lambda x: -x)
  • sorted() 함수와의 차이
nums = [3, 5, 1, 4, 2]
new_nums = sorted(nums) # 정렬한 새로운 리스트를 만듭니다.
print(nums, new_nums) # [3, 5, 1, 4, 2] [1, 2, 3, 4, 5]
  • .reverse()
    주어진 리스트를 반대로 뒤집습니다. 정렬과는 관계가 없습니다.
# .reverse()

my_list = [2,4,6,5,7,8]
my_list.reverse()

my_list
# [8, 7, 5, 6, 4, 2]
  • reversed() 함수와의 차이 → reversed object를 만듭니다.
    reversed는 list()로 한번 더 감싸줘야 활용이 가능합니다.
nums = [3, 5, 1, 4, 2]
new_nums = reversed(nums)
print(nums, new_nums) # [3, 5, 1, 4, 2] <list_reverseiterator object at 0x000001E76A22F400>
print(list(new_nums)) # [2, 4, 1, 5, 3]
  • .insert(인덱스위치, 값)
    특정 인덱스 위치에 두번 째 인자로 받는 값을 추가합니다.
# insert(인덱스위치, 값)

my_list = [3,4,5,6]
my_list.insert(2,3)

my_list
# [3, 4, 3, 5, 6]
  • .extend(반복 가능한 객체)
    리스트의 끝에 여러개의 값을 추가할 수 있습니다.
    list는 예약어 이므로 변수명으로 짓지 않게 주의합니다.
# 하나만 합칠 경우
nums = [3, 5, 1, 4, 2]
nums.extend([7])
print(nums) # [3, 5, 1, 4, 2, 7]

# 스트링 같은 반복 가능한 객체를 그자체로 넣어버린 경우
letters = ['p', 'y', 't', 'h', 'o', 'n']
letters.extend('algorithm')
print(letters)
# ['p', 'y', 't', 'h', 'o', 'n', 'a', 'l', 'g', 'o', 'r', 'i', 't', 'h', 'm']
# 더하기 연산으로도 extend() 연산 가능 
nums = [3, 5, 1, 4, 2] + [7, 6, 8]
print(nums) # [3, 5, 1, 4, 2, 7, 6, 8]
  • .count(n)
    n의 갯수를 반환합니다.
nums = [3, 5, 1, 4, 2, 5]
print(nums.count(5)) # 2
  • .index(n)
    n의 인덱스 값을 반환합니다.
nums = [3, 5, 1, 4, 2, 5]
print(nums.count(5)) # 2

리스트 슬라이싱 정리

  1. 부분 잘라내기
    my_list[n:m] -> (n포함 m미만)
nums = [3, 5, 1, 4, 2]
sliced_nums = nums[2:4] # 인덱스 2 ~ 4 중 마지막 4를 제외한데까지 도려냄.
print(nums, sliced_nums) # [3, 5, 1, 4, 2] [1, 4]

# 왼쪽을 지정하지 않은 경우 0이라고 간주하고, 오른쪽을 지정하지 않은 경우 끝까지라고 인식합니다.
print(nums[:2]) # [3, 5]
print(nums[1:]) # [5, 1, 4, 2]

# 슬라이싱은 특이하게 인덱스 값을 초과하더라도 에러가 나지 않습니다.
print(nums[2:100]) # [1, 4, 2]
  1. 해당 특성을 이용하여 ‘전체’를 도려내면 리스트를 카피할 수 있습니다. (얕은 복사)
nums = [3, 5, 1, 4, 2]
nums2 = nums  # 같은 객체를 가리키게 되어 동일한 id 값을 같습니다.

copied_nums = nums[:]
print(copied_nums) # [3, 5, 1, 4, 2]
reversed_nums = nums[::-1]
print(reversed_nums) # [2, 4, 1, 5, 3]

# 얕은 복사를 사용하는 경우 id 값이 분리되므로 변경 시, 서로에게 영향을 주지 않습니다.
nums[0] = 100
print(nums, copied_nums) # [100, 5, 1, 4, 2] [3, 5, 1, 4, 2]
print(nums2) # [100, 5, 1, 4, 2] => 같은 객체이므로 nums[0] = 100을 통해 동일하게 변화합니다.
  1. 특정 부분을 슬라이싱 하여 그 자리에 대신 삽입할 수 있습니다.
nums = [3, 5, 1, 4, 2]
nums[1:2] = [9, 10, 11]
print(nums) # [3, 9, 10, 11, 1, 4, 2]

이를 응용하면, 특정 부분을 깔끔하게 도려내는 것도 가능합니다.

nums = [3, 5, 1, 4, 2]
nums[2:4] = []
print(nums) # [3, 5, 2]

python 리스트에 대해서 정리했습니다.

다음은 딕셔너리에 대해서 정리하겠습니다!

profile
존경하는 인물: 현 수원삼성블루윙즈 감독 이정효

0개의 댓글