-
[Python] 리스트(List)파이썬 2025. 2. 16. 16:41
컬렉션(Collection)
하나의 변수에 여러 개의 값을 저장할 수 있는 자료구조
예) 리스트, 튜플, 딕셔너리 등
리스트 (List)
순서대로 정리된 컬렉션!
- []
- 항목 ,(콤마)로 구분
- 인덱스(순번)로 접근 가능 (0부터)
- 파이썬의 경우, 자료형이 달라도 같은 리스트에 저장 가능
리스트의 생성, 수정, 삭제
# 리스트 생성 numbers = [0, 1, 2, 1, 3, 4] users = ['Kim', 'Choi', 'Park', 'Min'] arr = ['Kim', 1, 'Choi', 2, 'Park', [3, 4]] # index는 0번부터! numbers[0] # 0 numbers[-1] # 4 # 리스트 수정 users[-1] = 'dada' # users = ['Allen', 'Choi', 'Park', 'dada'] # 리스트 삭제 (인덱스) # del 리스트[index] del users[-1] # users = ['Allen', 'Choi', 'Park'] del users # users자체 전체 삭제! # .pop(index) numbers.pop(-1) # 4 반환&삭제 nums.pop() # index 0 # 리스트 삭제 (값) # .remove(value) numbers.remove(1) #numbers = [0, 2, 1, 3] # 동일 데이터의 경우, 먼저 나오는 데이터만 삭제!
리스트의 추가, 삽입
user1 = ['dada', '70'] user2 = ['mumu', '50'] # 추가 .append(value) user1.append(100) # ['dada', '70', 100] user2 = user2 + [150, ] # ['mumu', '50', 150] # 삽입 .insert(index, value) user1.insert(1, 100) # ['dada', 100, '70', 100] user2.insert(5, 100) # ['mumu', '50', 150, 100] # 길이를 넘어가면 그냥 맨마지막에 삽입
리스트의 슬라이싱
- 리스트[start:end:step]
- start는 포함, end는 미포함
- default
- start 0
- end 끝까지 포함
- step 1
nums = [1, 2, 3, 4, 5, 6, 7] nums[2:6] # [3, 4, 5, 6] nums[6:2] # [] nums[:2] # [1, 2] nums[2:6:2] # [3, 5]
리스트의 참조 복사
- 리스트는 주소를 참조
리스트2 = 리스트1 #같은 리스트 참조 리스트2 = 리스트1.copy() #복사한 새로운 리스트 리스트2 = 리스트1[:] #복사한 새로운 리스트 id(리스트) #메모리 확인 리스트1 is 리스트2 #같은 메모리 참조인지
리스트의 함수
nums = [33, 22, 11, 77, 55, 66, 99, 88] # 리스트의 길이 # len(리스트) len(nums) # 8 # 정렬 # .sort() nums.sort() # [11, 22, 33, 55, 66, 77, 88, 99] nums.sort(reverse=True) # [99, 88, 77, 66, 55, 33, 22, 11] nums.reverse() # [11, 22, 33, 55, 66, 77, 88, 99] # sorted(리스트) 원본 데이터 변경X sorted(nums) # 값의 인덱스 # .index(value) nums.index(22) # 1 # 리스트 병합 # .extend() nums1 = [11, 22] nums2 = [33, 44] nums1.extend(nums2) # nums1 = [11, 22, 33, 44] nums3 = nums1 + nums2 # nums3 = [11, 22, 33, 44, 33, 44] # 값의 개수 # .count() nums.count(22) # 1
리스트와 문자열
- index와 slice 모두 사용 가능
- str은 인덱스로 수정, 삭제(del) 불가
- str의 특정 값 수정 가능
- .replace(value, new)
- str의 특정 값 수정 가능
# 문자열 -> 리스트 text = 'text' chars = list(text) # 리스트 -> 문자열 text2 = ''.join(chars) # text text2 = '/'.join(chars) # t/e/x/t
예시 문제
백준 10988 [펠린드롬인지 확인하기]
https://www.acmicpc.net/problem/10988
펠린드롭은 대칭이 되는 문자열
예) level, aadaa, noon문자열의 인덱스를 이용해서 풀이 가능!
word = input() # index 0 ~ 문자열 길이의 절반까지 반복 # 홀수 길이인 경우, 중앙의 한 문자는 비교 필요X for i in range(len(word)//2): if word[i] != word[-(i+1)]: # 앞뒤에서 같은 순번의 문자 비교 print(0) break else : # for문 문제 없이 마칠 경우 print(1)
백준 10807 [개수 세기]
https://www.acmicpc.net/problem/10807
총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하기
리스트의 .count(value)를 사용하여 풀이 가능!
nums_len = int(input()) nums = list(map(int, input().split())) num = int(input()) print(nums.count(num))
백준 10813 [공 바꾸기]
https://www.acmicpc.net/problem/10813
1 ~ N번 바구니에 각 바구니 번호가 적힌 공이 들어있다.
M번 공을 바꿀 것이다.
공을 바꿀 두 바구니를 선택하여, 들어있는 공을 서로 교환한다.인덱스를 바구니 번호라고 가정하고 풀이!
n, m = map(int, input().split()) baskets = list(range(n+1)) for _ in range(m) : basket1, basket2 = map(int, input().split()) baskets[basket1], baskets[basket2] = baskets[basket2], baskets[basket1] print(*baskets[1:])
'파이썬' 카테고리의 다른 글
[Python] 파일 (0) 2025.03.03 [Python] 튜플(Tuple)과 딕셔너리(Dictionary) (0) 2025.02.16 [Python] 문자열 (0) 2025.02.16 [Python] 함수 (0) 2025.02.02 [Python] 조건문과 반복문 (0) 2025.02.02