1. 리스트
.append()
.pop(index)
.sort()
.reverse()
.insert(인덱스위치,값)
.extend(반복 가능한 개체)
.count(n)
.index(n)
# .append()
my_list = [3,4,5,6]
my_list.append(1)
my_list
#[3, 4, 5, 6, 1]
# .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()
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)
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()
my_list = [2,4,6,5,7,8]
my_list.reverse()
my_list
# [8, 7, 5, 6, 4, 2]
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(인덱스위치, 값)
my_list = [3,4,5,6]
my_list.insert(2,3)
my_list
# [3, 4, 3, 5, 6]
# 하나만 합칠 경우
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]
nums = [3, 5, 1, 4, 2, 5]
print(nums.count(5)) # 2
nums = [3, 5, 1, 4, 2, 5]
print(nums.count(5)) # 2
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]
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을 통해 동일하게 변화합니다.
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]