ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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)
    # 문자열 -> 리스트
    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
Designed by Tistory.