728x90
리스트
- mutable, ordered, iterable
[값 추가]
cafe = ['starbucks', 'tomntoms', 'hollys']
- .append(x) : 리스트에 값 추가, 가장 마지막에 추가됨
cafe.append('banapresso') # ['starbucks', 'tomntoms', 'hollys', 'banapresso']
- .extend(iterable) : 리스트에 iterable 값을 붙임
cafe.extend(['wcafe', '빽다방']) # ['starbucks', 'tomntoms', 'hollys', 'wcafe', '빽다방']
cafe.extend('ediya') # ['starbucks', 'tomntoms', 'hollys', 'e', 'd', 'i', 'y', 'a']
- .insert(i ,x) : 정해진 위치 i에 값을 추가
cafe.insert(0, 'start') # ['start', 'starbucks', 'tomntoms', 'hollys']
cafe.insert(len(cafe), 'end') # ['start', 'starbucks', 'tomntoms', 'hollys', 'end']
# 리스트의 길이를 넘어서는 인덱스는 마지막에 아이템 추가
cafe.insert(999, '!') # ['start', 'starbucks', 'tomntoms', 'hollys', 'end', '!']
[값 삭제]
- .remove(x) : 리스트에서 x인 값 삭제, 값이 없으면 오류
numbers = [1, 2, 3, 1, 2]
numbers.remove(1)
numbers # [2, 3, 1, 2]
- .pop(i) : 정해진 위치 i에 있는 값 삭제하고 그 항목 반환, i가 지정되지 않으면 마지막 항목을 삭제하고 되돌려줌
numbers = [1, 2, 3, 4, 5, 6]
numbers.pop(0) # 1
numbers # [2, 3, 4, 5, 6]
- .clear() : 리스트의 모든 항목 삭제
numbers = [1, 2, 3, 4, 5, 6]
numbers.clear()
numbers # []
[탐색 및 정렬]
- .index(x) : x값의 인덱스 값을 반환, 찾는 값이 없으면 오류 반환
a = [1, 2, 3, 4, 5]
a.index(3) # 2
- .count(x) : x의 개수를 반환
a = [1, 2, 5, 1, 5, 1]
a.count(1) # 3
- .sort() : 정렬시킴, 원본 리스트를 변형시키고 None을 반환
sorted(list)는 원본 리스트 변형시키지 않고 값을 반환
import random
lotto = random.sample(range(1, 46), 6) # [9, 39, 4, 37, 3, 36]
print(lotto, lotto.sort()) # [3, 4, 9, 36, 37, 39] None
lotto.sort(reverse = True) # [39, 37, 36, 9, 4, 3]
- .reverse() : 반대로 뒤집기, 원본 변형
reversed(list)는 원본 변환x
classroom = ['Tom', 'David', 'Justin']
classroom.reverse() # ['Justin', 'David', 'Tom']
[리스트의 복사 방법 - 얕은 복사, shallow copy]
original_list = [1, 2, 3]
copy_list = original_list
copy_list[0] = 5
print(original_list) # [5, 2, 3]
print(copy_list) # [5, 2, 3]
- 위와 같이 복사를 진행하면 같은 리스트를 공유(참조)하고 있기 때문에, 한 리스트에서 값을 바꾸면 두 개의 리스트 모두 변화함 -> 따라서 다음과 같은 방법 사용
- slice 연산자 사용
a = [1, 2, 3]
b = a[:]
b[0] = 5
print(a) # [1, 2, 3]
print(b) # [5, 2, 3]
- list() 사용
a = [1, 2, 3]
b = list(a)
b[0] = 5
print(a) # [1, 2, 3]
print(b) # [5, 2, 3]
[리스트의 복사 방법 - 깊은 복사, deep copy]
a = [1, 2, [1, 2]]
b = a[:]
b[2][0] = 5
print(a) # [1, 2, [5, 2]]
print(b) # [1, 2, [5, 2]]
- 얕은 복사에서는 위와 같은 2차원 리스트에서 값이 같이 변하게 됨
- 만일 중첩된 상황에서 복사를 하고 싶다면, 깊은 복사를 해서 내부에 있는 모든 객체까지 복사할 수 있음
import copy
a = [1, 2, [1, 2]]
b = copy.deepcopy(a)
b[2][0] = 3
print(a) # [1, 2, [1, 2]]
print(b) # [1, 2, [3, 2]]
[List Comprehension]
- 표현식과 제어문을 통해 리스트를 생성
- 여러 줄의 코드를 한 줄로 줄일 수 있음
- 반복문, 제어문이 중첩될 경우에 사용하면 가독성이 저하될 수 있음 (자주 사용x)
# List Comprehension
numbers = range(1, 11)
cubic_list = [number**3 for number in numbers]
print(cubic_list) # [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
# List Comprehension + 조건문
even_list = [number for number in range(1, 11) if not number%2]
print(even_list) # [2, 4, 6, 8, 10]
[iterable 데이터 구조에 적용 가능한 Built-in Function]
- map(function, iterable)
- 순회가능한 데이터 구조의 모든 요소에 function적용한 뒤 결과를 돌려줌
- return은 map_object 형태
numbers = [1, 2, 3]
new_numbers = ''.join(map(str, numbers))
print(new_numbers) # 123
numbers = ['1', '2', '3']
new_numbers = list(map(int, numbers))
print(new_numbers) # [1, 2, 3]
def cube(n):
return n ** 3
numbers = [1, 2, 3]
new_numbers = list(map(cube, numbers))
print(new_numbers) # [1, 8, 27]
- filter(function, iterable)
- iterable에서 function의 반환 결과가 True인 것들만 구성하여 반환
- return은 filter_object 형태
def odd(n):
return n % 2
numbers = [1, 2, 3]
new_numbers = list(filter(odd, numbers))
print(new_numbers) # [1, 3]
- zip(*iterable)
- 복수의 iterable 객체를 모아줌
- return은 zip_object 형태
girls = ['jane', 'ashley', 'mary']
boys = ['justin', 'eric', 'david']
pair = list(zip(girls, boys))
print(pair) # [('jane', 'justin'), ('ashley', 'eric'), ('mary', 'david')]
728x90
'PROGRAMMING > PYTHON' 카테고리의 다른 글
[Python] heapq 모듈 사용법 (0) | 2022.01.11 |
---|---|
[Python] 세트, 딕셔너리 관련 함수 (0) | 2022.01.10 |
[Python] 문자열 관련 함수 (0) | 2022.01.10 |
[Python] 2차원 배열, 딕셔너리 정렬 (0) | 2021.10.08 |
[Python] 진수 변환 (0) | 2021.10.03 |
댓글