실버를 위한 코딩/파이썬 연습 48

리스트 메서드, remove(), pop(), clear()

리스트에서 요소를 삭제하거나 비우는 데 사용되는 주요 메서드인 remove(), pop(), clear()리스트에서 요소를 삭제할 때는 remove(), pop(), clear() 메서드를 사용합니다. remove(x)는 값이 x인 첫 항목을 삭제하고, pop()은 마지막 요소를 꺼내며, clear()는 리스트를 완전히 비웁니다.✅ 삭제 관련 리스트 메서드1. remove(x)값이 x인 첫 번째 항목을 삭제합니다.값이 없으면 ValueError 발생.s = [1, 2, 3, 2, 4]s.remove(2)print(s) # [1, 3, 2, 4]※ 두 번째 2는 남아 있습니다.2. pop()마지막 요소를 꺼내서 반환하며 리스트에서 제거합니다.s = [1, 2, 3]x = s.pop()print(x) #..

리스트의 주요 메서드 작동 방식

올려주신 코드 실행 결과는 리스트의 주요 메서드 작동 방식을 잘 보여주는 예입니다. 아래에 각 단계별로 설명드리겠습니다.📌 코드 분석s = [1, 2, 3]리스트 s는 [1, 2, 3]으로 시작합니다.✅ append(5)s.append(5) → [1, 2, 3, 5]리스트 맨 끝에 5 추가✅ insert(3, 4)s.insert(3, 4) → [1, 2, 3, 4, 5]인덱스 3 위치에 4를 삽입 (기존 5는 뒤로 밀림)✅ index(3) / index(4)s.index(3) → 2s.index(4) → 3해당 값이 처음 등장하는 인덱스를 반환✅ reverse()s.reverse() → [5, 4, 3, 2, 1]리스트 순서를 뒤집음✅ sort()s.sort() → [1, 2, 3..

중첩 리스트와 얕은복사와 깊은복사

중첩 리스트와 얕은복사와 깊은복사중첩 리스트는 리스트 안에 또 다른 리스트가 포함된 구조입니다. 얕은 복사는 바깥 리스트만 복사하고 내부 리스트는 원본과 공유합니다. 반면 깊은 복사는 모든 계층의 리스트를 새로 만들어 원본과 완전히 독립된 구조를 만듭니다.📌 코드 요약:L = [1, ['a', ['x', 'y'], 'b'], 3]L은 중첩 리스트를 포함하는 구조입니다.구성은 다음과 같습니다:L[0] = 1 L[1] = ['a', ['x', 'y'], 'b'] L[2] = 3📌 인덱싱 흐름:L[1]→ ['a', ['x', 'y'], 'b']L[1][1]→ ['x', 'y'](위 리스트의 두 번째 요소)L[1][1][1]→ 'y'(그 리스트에서 인덱스 1, 즉 'y'를 추출)🧠 핵심 개념:이중, 삼중 ..

얕은 복사(shallow copy)와 깊은 복사(deep copy)

얕은 복사(shallow copy)와 깊은 복사(deep copy)파이썬에서 얕은 복사(shallow copy)와 깊은 복사(deep copy)는 자료구조, 특히 리스트, 딕셔너리 등 변경 가능한 객체를 다룰 때 매우 중요한 개념입니다. 아래에서 차이점을 예시와 함께 설명드리겠습니다.🔹 1. 얕은 복사 (Shallow Copy)얕은 복사는 가장 바깥쪽 객체만 새로 복사하고, 내부에 포함된 객체는 원본과 동일한 참조를 공유합니다.예시:import copyoriginal = [[1, 2], [3, 4]]shallow = copy.copy(original)이때 구조는 다음과 같습니다:original과 shallow는 서로 다른 리스트이지만,original[0], original[1]은 shallow[0], ..

리스트 안에 리스트가 포함될 경우

리스트 안에 리스트가 포함될 경우s = [1, 2, 3]리스트 s를 정의합니다.t = ['begin', s, 'end']리스트 t를 정의합니다.여기서 중요한 점은 s의 값을 복사한 것이 아니라 s 자체(객체의 참조)를 넣은 것입니다.결과적으로 t는 ['begin', [1, 2, 3], 'end']입니다.t[1][1]t[1]은 [1, 2, 3]이고, 그 안의 1번 인덱스 값은 2입니다.결론출력된 값은 2입니다.이 예제는 리스트 안에 리스트가 포함될 경우의 참조 방식과 이중 인덱싱을 잘 보여줍니다.

list에서 range와의 미묘한 관계

list에서 range와의 미묘한 관계a = range(4)a는 range(0, 4)로, 이 자체는 0, 1, 2, 3이라는 값을 생성하지만 아직 리스트는 아님입니다.즉, a는 range 객체입니다.a[::2]이는 슬라이싱 연산으로, range(0, 4) 중에서 인덱스를 2씩 건너뛴 요소들을 의미합니다.결과는 range(0, 4, 2)로 출력됩니다.핵심 설명range 객체는 슬라이싱 시에도 새로운 range 객체를 반환합니다.따라서 a[::2]는 실제로는 0, 2 값을 생성하지만, 출력 형태는 range(0, 4, 2)로 보입니다.실제 값이 궁금하다면?list(a[::2])이렇게 하면 실제 리스트 [0, 2]가 출력됩니다. 결과값이 같지만 객체가 어디에 소속되어 있느냐에 따라 표현되는 형식은 다릅니다.

튜플을 활용한 파이썬 함수 호출

✅ 다음은 어떤 코드인가요?이 코드는 두 숫자를 더하거나 빼는 함수를 만들고,어떤 연산을 할지 숫자 하나로 선택해서 실행하는 방식입니다.1단계: 더하기와 빼기 함수 만들기def add(a, b): return a + badd는 더하기 함수입니다.a와 b를 받아서 더한 값을 돌려줍니다.def sub(a, b): return a - bsub는 빼기 함수입니다.a와 b를 받아서 뺀 값을 돌려줍니다.2단계: 선택 숫자를 정합니다select = 0이 변수 select는 어떤 함수를 쓸지를 선택하는 번호입니다.0이면 첫 번째 함수(add)1이면 두 번째 함수(sub)3단계: 함수를 선택해서 계산합니다(add, sub)[select](2, 3)이 부분은 아주 중요한 포인트입니다!(add, sub) : 이건..

파이썬 프로젝트 패키지 관리와 의존성 관리, Poetry란?

📝 Poetry란?Poetry는 파이썬 프로젝트의 패키지 관리와 의존성 관리, 그리고 패키지 배포까지 통합적으로 지원하는 도구입니다.기존의 pip, virtualenv, setuptools, requirements.txt 등 여러 도구를 한데 통합한 올인원 솔루션이라 생각하시면 됩니다.📦 주요 기능기능 설명의존성 관리pyproject.toml 파일을 통해 직관적으로 의존성 추가 및 잠금(lock) 가능가상환경 자동 관리프로젝트마다 자동으로 가상환경 생성 및 관리패키징 간편화간단한 명령어로 패키지 생성 및 배포 준비 가능일관성 있는 환경 구성poetry.lock 파일로 팀 간 환경 차이 최소화버전 관리 지원패키지의 버전 명세를 ^, ~ 등으로 유연하게 조절 가능🛠️ Poetry 설치curl -sSL ..

웹 기반 사용자 인터페이스(UI), Swagger

웹 기반 사용자 인터페이스(UI), SwaggerFastAPI에서 제공하는 Swagger는 API 문서를 자동으로 생성해 주는 웹 기반 사용자 인터페이스(UI)입니다.API를 설명하고, 직접 테스트까지 할 수 있는 편리한 도구입니다.✅ Swagger란?웹 API의 기능을 시각적으로 보여주는 도구API 요청 방법과 응답 구조를 자동으로 문서화직접 버튼 클릭으로 요청을 보내고 결과를 확인할 수 있음FastAPI는 Swagger를 내장하여 별도 설정 없이 /docs 주소에서 바로 제공📌 Swagger의 주요 기능기능 설명API 목록 보기모든 경로(GET, POST 등)를 한눈에 확인 가능입력 필드 자동 생성필요한 데이터 형식을 자동으로 표시버튼 클릭 테스트코드 작성 없이 API 실행 가능응답 확인응답 데이터..

FastAPI 기초 교육 자료 (입문 실습용)

🏷️ FastAPI 기초 교육 자료 (입문 실습용)📌 학습 목표FastAPI 웹 서버를 실행할 수 있다.URL 경로를 만들고 응답 메시지를 작성할 수 있다.JSON 형식의 데이터를 주고받을 수 있다.Swagger UI를 통해 API를 테스트할 수 있다.1. FastAPI란?Python으로 만든 빠르고 쉬운 웹 프레임워크웹 브라우저나 앱과 데이터를 주고받는 API 서버 구축에 최적화문서 자동 생성 (Swagger, Redoc)2. 프로젝트 기본 구조📁 예제 디렉터리 구조my_project/├── main.py ← 여기에 서버 코드 작성3. 예제 코드 작성하기main.py 파일에 아래와 같이 작성합니다.from fastapi import FastAPIfrom pydantic import ..