반응형

들어가며

파이썬을 사용하다 보면, 대용량 데이터를 효율적으로 처리하거나 무한 시퀀스를 다루고 싶을 때 제너레이터(generator) 가 빛을 발합니다. 제너레이터는 한 번에 모든 값을 메모리에 올리지 않고, 필요할 때마다 한 개씩 생성한다는 점에서 메모리 사용량을 크게 줄여주는 장점이 있습니다. 이 글에서는 yield 키워드의 기본 개념부터 심화 주제인 yield from, 제너레이터 표현식, 그리고 실전 파이프라인 예시까지 차근차근 살펴보겠습니다.


1. 제너레이터란?

  • 정의
    일반 함수와는 달리, yield 키워드를 포함한 함수를 제너레이터 함수라고 부릅니다. 이 함수를 호출하면 제너레이터 객체(generator object)가 반환되며, 이 객체는 이터레이터(iterator)로 동작합니다.
  • 특징
    1. 지연 평가(Lazy Evaluation): 값이 필요할 때마다 생성 → 메모리 절약
    2. 상태 보존(Stateful): yield로 멈춘 위치와 지역 변수 상태를 그대로 유지
    3. 이터레이터 프로토콜: __iter__(), __next__() 메서드를 지원 → for 루프와 호환

2. yield 기본 사용법

def simple_gen():
    print("첫 번째 yield 직전")
    yield "A"
    print("두 번째 yield 직전")
    yield "B"
    print("완료!")

gen = simple_gen()
print(next(gen))  # 첫 번째 yield 직전 → "A"
print(next(gen))  # 두 번째 yield 직전 → "B"
# 이후 next(gen)를 호출하면 StopIteration 발생
  1. simple_gen() 호출 → 제너레이터 객체 생성
  2. next(gen) → 첫 yield까지 실행, "A" 반환
  3. 다시 next(gen) → 두 번째 yield까지 실행, "B" 반환

3. yield from 심화

복수의 이터러블을 한꺼번에 이어서 처리할 때 yield from을 사용하면 코드를 간결하게 작성할 수 있습니다.

def chain(*iterables):
    yield from iterables[0]
    yield from iterables[1]
    # 또는:
    # for it in iterables:
    #     yield from it

# 사용 예
print(list(chain([1,2], "AB", range(3))))
# 출력: [1, 2, 'A', 'B', 0, 1, 2]
  • 내부 이터러블의 요소를 차례로 꺼내 yield
  • for 루프 없이 중첩 이터러블 처리 가능

4. 제너레이터 표현식

리스트 컴프리헨션과 거의 같은 문법이지만, 괄호를 [] 대신 ()로 바꾸면 제너레이터 표현식이 됩니다.

# 리스트 컴프리헨션
squares_list = [x*x for x in range(1_000_000)]

# 제너레이터 표현식
squares_gen = (x*x for x in range(1_000_000))

print(next(squares_gen))  # 0
print(next(squares_gen))  # 1
# … 계속 메모리 부담 없이 사용 가능

5. 실전 예제: 파이프라인 처리

여러 단계를 거쳐 데이터를 처리할 때, 각 단계를 제너레이터로 구현하면 매우 깔끔합니다.

# 1) 무한 시퀀스 생성
def integers(start=1):
    n = start
    while True:
        yield n
        n += 1

# 2) 짝수 필터
def evens(seq):
    for x in seq:
        if x % 2 == 0:
            yield x

# 3) 제곱 계산
def squares(seq):
    for x in seq:
        yield x * x

# 파이프라인 연결
gen = squares(evens(integers(1)))
for _ in range(5):
    print(next(gen))
# 출력: 4, 16, 36, 64, 100
  • integers: 무한히 증가하는 숫자 생성
  • evens: 짝수만 필터링
  • squares: 제곱 계산
  • 중간 결과를 리스트로 저장하지 않고 스트리밍 처리 가능

6. 제너레이터 제어: close()와 throw()

  • gen.close(): 제너레이터를 강제 종료하고 GeneratorExit 예외를 발생시킵니다.
  • gen.throw(exc_type): 제너레이터 내부에 예외를 던져, 내부에서 예외 처리 로직을 수행할 수 있습니다.
def foo():
    try:
        yield 1
    except ValueError:
        print("ValueError 처리됨!")
    yield 2

g = foo()
print(next(g))               # 1
print(g.throw(ValueError))   # "ValueError 처리됨!" 출력, 이후 2 반환

7. 언제 사용하면 좋을까?

  • 대용량 데이터 스트리밍: 로그 파일, 대규모 CSV 등
  • 네트워크 데이터 처리: 소켓 스트림, API 응답 청크
  • 무한 시퀀스 생성: 시뮬레이션, 랜덤 넘버 생성
  • 메모리 최적화: 전체 데이터를 한 번에 메모리에 올리기 어려울 때

마무리

yield와 제너레이터는 파이썬의 강력한 기능 중 하나로, 복잡한 데이터 파이프라인을 간결하고 메모리 효율적으로 구현할 수 있게 해 줍니다. 본 가이드를 바탕으로 다양한 상황에 제너레이터를 응용해 보시고, 스트리밍 처리나 무한 시퀀스 생성 등에서 그 진가를 느껴보세요!

반응형
반응형

PowerShell에서 Python Poetry 설치 및 PyPI 배포 가이드

작성일: 2025-04-29


📌 개요

이 글은 Windows 환경에서 PowerShell을 사용하여 Python의 패키지 관리 도구인 Poetry를 설치하고, 이를 활용해 PyPI에 패키지를 배포하는 과정을 자세히 안내합니다. 또한, 설치 후 생성되는 폴더인 pypoetry의 의미도 함께 설명합니다.


1. Poetry란?

Poetry는 Python의 패키지 및 의존성 관리, 빌드, 배포 등을 현대적으로 통합 관리할 수 있게 해주는 도구입니다. setup.py, requirements.txt, virtualenv, twine 등의 기능을 하나로 통합해 줍니다.

주요 기능

  • 프로젝트 생성 및 관리
  • 의존성 자동 설치 및 잠금(lock)
  • 가상환경 자동 생성
  • PyPI 배포 지원

2. PowerShell에서 Poetry 설치 방법

1️⃣ Python 설치 확인

python --version

없다면 https://www.python.org/downloads/windows/ 에서 설치하고, "Add Python to PATH" 옵션을 체크하세요.

2️⃣ Poetry 설치

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

3️⃣ 환경 변수 설정

poetry 명령이 인식되지 않는다면 다음 경로를 환경 변수에 추가합니다:

%USERPROFILE%\AppData\Roaming\Python\Scripts\

4️⃣ 설치 확인

poetry --version

3. Poetry를 사용한 PyPI 배포

1️⃣ 프로젝트 생성

poetry new my_package
cd my_package

2️⃣ pyproject.toml 설정 예시

[tool.poetry]
name = "my-package"
version = "0.1.0"
description = "A simple example package"
authors = ["홍길동 <hong@example.com>"]

[tool.poetry.dependencies]
python = "^3.8"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

3️⃣ 패키지 빌드

poetry build

4️⃣ PyPI 토큰 설정 및 배포

poetry config pypi-token.pypi your_token_here
poetry publish --build

TestPyPI를 사용할 경우:

poetry config repositories.test-pypi https://test.pypi.org/legacy/
poetry publish --build -r test-pypi

4. C:\Users\<사용자>\AppData\Roaming\pypoetry 폴더란?

Poetry 설치 후 생성되는 pypoetry 폴더는 사용자 설정, 캐시, 가상환경, 인증 정보 등을 저장하는 디렉토리입니다.

주요 구성

파일/폴더 설명
auth.toml PyPI 인증 토큰 저장
config.toml 사용자 환경 설정 (가상환경 등)
virtualenvs/ 생성된 가상환경 목록
plugins/ Poetry 플러그인 저장 위치
cache/ 패키지 캐시

삭제하면 초기화되지만, 문제가 없으면 그대로 두는 것이 좋습니다.


✅ 요약

항목 설명
Poetry 역할 Python 의존성, 빌드, 배포 통합 도구
설치 명령 PowerShell에서 Invoke-WebRequest 명령 사용
배포 대상 PyPI 또는 TestPyPI
pypoetry 폴더 설정 및 사용자 데이터 저장 경로

📎 참고 링크

반응형
반응형

🔧 VS Code에서 Poetry 가상환경 제대로 연동하는 방법 (pyenv + launch.json 설정 포함)

Python 프로젝트를 관리할 때 Poetry는 더 이상 선택이 아닌 필수가 되어가고 있습니다. 하지만 VS Code와 Poetry를 연동할 때 인터프리터 감지가 안 되거나, 실행이 안 되는 불편함을 겪은 분들이 많을 거예요.

이 글에서는 pyenv + Poetry를 사용하는 프로젝트를 VS Code에서 완벽하게 연동하는 방법을 정리합니다. 특히 launch.json을 통해 디버깅까지 깔끔하게 설정하는 법도 다룹니다.


1️⃣ Poetry 가상환경 기본 구조 이해하기

Poetry는 기본적으로 가상환경을 아래 위치에 생성합니다:

# 프로젝트 외부 경로 (기본 설정)
C:\Users\<사용자>\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-<hash>

이로 인해 VS Code는 인터프리터를 자동으로 인식하지 못하는 경우가 많습니다.


2️⃣ Poetry 가상환경을 VS Code에서 인식시키는 방법

✅ 방법 1: 가상환경을 프로젝트 내부 .venv/에 생성 (강력 추천)

poetry config virtualenvs.in-project true
poetry env remove python      # (기존 가상환경 제거)
poetry install                # 가상환경 재생성 (.venv 생성됨)

이후 VS Code를 열면 .venv/Scripts/python.exe가 자동으로 감지됩니다.

✅ 방법 2: 수동으로 인터프리터 지정

  1. 터미널에서 가상환경 경로 확인:
poetry env info --path
  1. VS Code에서 Ctrl+Shift+PPython: Select Interpreter
  2. 위 경로의 Scripts/python.exe 선택

✅ 방법 3: .vscode/settings.json 직접 작성

{
  "python.defaultInterpreterPath": "C:\\Users\\flami\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\ice-breaker-xxxx\\Scripts\\python.exe"
}

3️⃣ launch.json으로 Poetry 가상환경에서 .py 자동 실행

VS Code의 launch.json을 설정하면 F5만 눌러도 poetry 가상환경에서 스크립트를 실행할 수 있습니다.

📁 예시 구조

ice_breaker/
├── main.py
└── .vscode/
    └── launch.json

📄 launch.json 예시

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Poetry Run: main.py",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/main.py",
      "console": "integratedTerminal",
      "args": ["--debug"],

      "python": "C:\\Users\\flami\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\ice-breaker-xxxx\\Scripts\\python.exe"
    }
  ]
}

4️⃣ Poetry 환경 진입 여부 확인하는 방법

Poetry 가상환경에 들어와 있는지 확인하려면 다음 명령들을 활용하세요:

poetry env info --path
poetry env info
where python

또는 Python에서:

import sys
print(sys.prefix)

✅ 마무리 체크리스트

작업 명령
프로젝트 내부에 .venv 생성 poetry config virtualenvs.in-project true
가상환경 활성화 poetry shell 또는 activate.ps1
인터프리터 경로 확인 poetry env info --path
VS Code에 설정 launch.json or settings.json
디버깅 설정 F5 → launch.json 자동 실행 가능

✨ 마치며

Poetry와 VS Code를 연동하면 패키지 관리 + 실행 + 디버깅까지 깔끔하게 통합됩니다.
이번 글의 설정대로만 따라 하면, 더 이상 “왜 VS Code에서 가상환경이 안 잡혀요?” 같은 고민은 끝입니다.

반응형
반응형

중첩 함수하나의 함수 내에서 다른 함수를 정의하는 것을 말합니다.  중첩 함수는 해당 부모 함수 내부에서만 유효하며 외부에서 직접 접근할 수 없습니다. 중첩 함수는 주로 부모 함수 내에서만 필요한 보조 작업을 수행하기 위해 사용됩니다.

def outer_function():
    def inner_function():
        return "This is inner function."
    
    return inner_function()

# outer_function을 호출하여 중첩된 inner_function을 실행합니다.
result = outer_function()
print(result)  # 출력: This is inner function.

 

위의 예시에서 inner_function은 outer_function 내에서만 정의되었습니다. 이는 outer_function 외부에서는 직접적으로 접근할 수 없음을 의미합니다.

 

반응형
반응형

일급객체(first-class object)란 프로그래밍에서 아래에 나열된 특징을 가지는 모든 객체들을 가리킵니다. 

  • 모든 요소는 할당 명령문의 대상이 될 수 있습니다.
  • 모든 요소는 동일 (equal, ==) 비교의 대상이 될 수 있습니다.
  • 모든 요소는 함수의 파라미터가 될 수 있습니다. 
  • 모든 요소는 함수의 반환 값이 될 수 있습니다.

파이썬의 일급 객체는 다음과 같은 특징을 가지는 요소들이 있습니다.

  • 함수 (Function): 함수는 변수에 할당되거나 다른 함수의 인자로 전달될 수 있습니다.
  • 클래스 (Class): 클래스도 일급 객체로 간주됩니다. 
  • 메서드 (Method): 클래스 내부의 함수도 일급 객체로 취급됩니다.

다음은 함수를 일급 객체로 이용한 예제입니다. 

def add(n1, n2):
    return n1 + n2

def subtract(n1, n2):
    return n1 - n2

def multiply(n1, n2):
    return n1 * n2

def divide(n1, n2):
    return n1 / n2

## int/string/float 등과 같이 함수도 일급 객체로 활용

def calculate(calc_function, n1, n2):
    return calc_function(n1, n2)

result = calculate(add, 2, 3)
print(result)

 

 

반응형
반응형

파이썬 무제한 인자  이해하기

파이썬에서 무제한 인자를 사용하면 함수에 임의 개수의 인자를 전달할 수 있습니다. 이를 통해 함수를 더 유연하게 작성할 수 있습니다.

1. *args (Positional Arguments)

  •  *args는 임의 개수의 인자를 받아서 튜플(Tuple) 형태로 저장합니다.
  • 함수 내에서 *args를 사용하면 여러 개의 인자를 처리할 수 있습니다.
def print_args(*args):
    for arg in args:
        print(arg)

print_args(1, 2, 3)  # 출력: 1 2 3

 

2. **kwargs (Keyword Arguments)

  • **kwargs는 임의 개수의 키워드 인자를 받아서 딕셔너리(Dictionary) 형태로 저장합니다.
  • 함수 내에서 **kwargs를 사용하면 여러 개의 키워드 인자를 처리할 수 있습니다.  
def print_kwargs(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_kwargs(name="Alice", age=30)  # 출력: name: Alice, age: 30


 

반응형

'python' 카테고리의 다른 글

[python] 중첩 함수(nested function)  (0) 2024.04.09
[python] first-class object (일급 객체)  (0) 2024.04.09
[python] 데코레이터(decorator)  (0) 2024.04.07
python 자주 사용하는 문자열 함수  (0) 2024.04.02
Python Dictionary  (0) 2024.03.28
반응형

데코레이터란 데코레이터는 기존의 함수나 클래스를 수정하지 않고 그 기능을 확장하거나 변경하는 방법을 제공합니다. 이는 함수형 프로그래밍의 아이디어 중 하나로, 코드를 재사용하고 가독성을 향상시키는 데 도움이 됩니다.

데코레이터의 구조

데코레이터는 보통 함수로 정의되며, 다른 함수를 인수로 받아 처리한 후 그 함수를 반환합니다. 데코레이터를 사용하여 함수에 추가적인 기능을 덧붙일 수 있습니다.

 

def decorator_function(func):
    def wrapper():
        print("Before calling the function")
        func()
        print("After calling the function")
    return wrapper

@decorator_function
def say_hello():
    print("Hello, world!")

say_hello()

출력 :
Before calling the function
Hello, world!
After calling the function

 

위의 코드에서 decorator_function은 데코레이터 함수로, say_hello 함수를 인수로 받아 그 기능을 수정하고 있는 것을 볼 수 있습니다.

데코레이터의 장점

  1. 재사용성: 데코레이터를 사용하면 코드의 재사용성을 높일 수 있습니다. 동일한 기능을 여러 함수에 적용하려면 데코레이터를 각 함수에 적용하면 됩니다.
  2. 가독성: 데코레이터를 사용하면 함수의 핵심 기능과 추가 기능을 분리하여 코드를 더 읽기 쉽게 만듭니다.
  3. 유연성: 데코레이터를 사용하여 함수의 동작을 동적으로 변경할 수 있습니다. 이는 코드를 더 유연하고 확장 가능하게 만듭니다.

데코레이터의 활용

  • 로깅(logging)
  • 인증 및 권한 부여(authentication, authorization)
  • 성능 측정
  • 캐싱(caching)
  • 예외 처리
반응형

'python' 카테고리의 다른 글

[python] first-class object (일급 객체)  (0) 2024.04.09
python Unlimited Arguments(무제한 인자)  (0) 2024.04.08
python 자주 사용하는 문자열 함수  (0) 2024.04.02
Python Dictionary  (0) 2024.03.28
slice notation  (0) 2024.03.27
반응형

1.  len() : 문자열 길이 구하기 

str = "Life is good"
lenStr = len(str)  # 문자열 길이 구하기
print(lenStr)  # 출력: 12

 

2. find(),  index() : 문자열 특정 문자  인덱스 찾기

text = "Hello, World!"
print(text.find("World"))   # 출력: 7
print(text.index("World"))  # 출력: 7

3. upper(), lower() : 문자열 대/소문자 변환하기

text = "Hello, World!"
print(text.lower())  # 출력: hello, world!
print(text.upper())  # 출력: HELLO, WORLD!

4. strip(), lstrip(), rstrip() : 문자열 양쪽, 왼쪽, 오른쪽 공백 제거하기 

text = "   Hello, World!   "
print(text.strip())   # 출력: Hello, World!
print(text.lstrip())  # 출력: Hello, World!   
print(text.rstrip())  # 출력:    Hello, World!

 

5. split() : 문자열을 구분자를 기준으로 분할하여 리스트로 반환하기 

text = "apple, banana, cherry"
print(text.split(", "))  # 출력: ['apple', 'banana', 'cherry']

6. join() : 문자열 리스트를 지정된 구분자로 연결하기 

words = ['apple', 'banana', 'cherry']
print(", ".join(words))  # 출력: apple, banana, cherry

 

7. startswith(prefix), endswitch(suffix) : 문자열이 특정 접두사 혹은 접미사로 시작/끝나는지 확인하기

text = "Hello, World!"
print(text.startswith("Hello"))  # 출력: True
print(text.endswith("World!"))   # 출력: True

 

8. replace(old, new) : 문자열에서 지정된 문자 대체하기 

text = "Hello, World!"
new_text = text.replace("World", "Python")
print(new_text)  # 출력: Hello, Python!

 

반응형

'python' 카테고리의 다른 글

python Unlimited Arguments(무제한 인자)  (0) 2024.04.08
[python] 데코레이터(decorator)  (0) 2024.04.07
Python Dictionary  (0) 2024.03.28
slice notation  (0) 2024.03.27
Type Hints  (0) 2024.03.25
반응형

파이썬은 데이터를 효율적으로 관리할 수 있는 다양한 자료구조를 제공합니다. 그 중에서도 딕셔너리(Dictionary)는 키(key)와 값(value)으로 이루어진 유연한 데이터 구조로, 파이썬 프로그래밍에서 빠질 수 없는 중요한 요소 중 하나입니다. 

파이썬 딕셔너리의 기초

파이썬 딕셔너리는 중괄호 {}를 사용하여 정의하며, 키와 값은 콜론(:)으로 구분하여 표현됩니다. 

my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}

 

위의 예시에서 'name', 'age', 'city'는 키(key)이고, 'Alice', 30, 'New York'은 각각 해당하는 값(value)입니다. 딕셔너리는 키를 사용하여 값을 검색하고 수정할 수 있습니다.

딕셔너리의 활용

값 접근과 수정

딕셔너리에서 값에 접근하려면 대괄호 [ ] 안에 키를 넣어주면 됩니다.

print(my_dict['name'])  # 출력: Alice

 

키를 사용하여 값을 수정할 수도 있습니다

my_dict['age'] = 31
print(my_dict)  # 출력: {'name': 'Alice', 'age': 31, 'city': 'New York'}

새로운 키-값 쌍 추가

my_dict['gender'] = 'Female'
print(my_dict)  # 출력: {'name': 'Alice', 'age': 31, 'city': 'New York', 'gender': 'Female'}

 

새로운 키-값 쌍을 추가하려면 해당 키를 지정하고 값을 할당하면 됩니다

 

딕셔너리의 중첩

파이썬 딕셔너리는 중첩하여 사용할 수 있습니다. 다음은 중첩된 딕셔너리의 예시입니다

nested_dict = {
    'person1': {'name': 'Alice', 'age': 30},
    'person2': {'name': 'Bob', 'age': 25}
}

위의 예시에서는 'person1', 'person2'라는 키에 각각 다른 딕셔너리가 할당되어 있습니다.

심화: 복잡한 중첩 구조

더 복잡한 중첩 구조의 딕셔너리를 사용할 수도 있습니다. 

complex_dict = {
    'outer_dict': {
        'inner_dict_1': {
            'inner_list': [
                {'key1': 'value1'},
                {'key2': 'value2'}
            ]
        },
        'inner_dict_2': {
            'inner_list': [
                {'key3': 'value3'},
                {'key4': 'value4'}
            ]
        }
    }
}

 

위의 예시에서는 'outer_dict' 안에 두 개의 'inner_dict'가 있고, 각각의 'inner_dict' 안에는 리스트가 있으며, 리스트 안에는 또 다른 딕셔너리가 포함되어 있습니다.

중첩 구조의 출력 

# 중첩된 딕셔너리 값 출력 예시
print(complex_dict['outer_dict']['inner_dict_1']['inner_list'][0]['key1'])  # 출력: value1

결론

파이썬의 딕셔너리는 데이터를 효율적으로 관리하기 위한 강력한 도구입니다. 기초적인 사용법부터 복잡한 중첩 구조까지 다양한 형태로 활용할 수 있으며, 이를 통해 다양한 데이터를 효율적으로 다룰 수 있습니다. 딕셔너리의 활용은 파이썬 프로그래밍에서 중요한 부분이므로, 잘 익혀두는 것이 좋습니다.

이상으로 파이썬 딕셔너리에 대한 기초부터 심화까지의 내용을 다뤄보았습니다. 

반응형

'python' 카테고리의 다른 글

[python] 데코레이터(decorator)  (0) 2024.04.07
python 자주 사용하는 문자열 함수  (0) 2024.04.02
slice notation  (0) 2024.03.27
Type Hints  (0) 2024.03.25
Dictionary Comprehension  (0) 2024.03.23
반응형

Slice Notation이란?


Slice notation은 데이터 시퀀스의 부분을 선택하는 방법입니다. 이것은 데이터를 가져오거나 잘라낼 때 사용됩니다. 일반적으로 start:stop:step 형식으로 작성되며, 각각의 요소는 선택할 범위를 지정합니다. 각 요소는 선택적이며, 생략할 수 있습니다.

 

1. 기본 슬라이스 표기법

  • a[start:stop]: start부터 stop-1까지의 아이템을 선택합니다.
  • a[start:]: start부터 끝까지의 아이템을 선택합니다.
  • a[:stop]: 처음부터 stop-1까지의 아이템을 선택합니다.
  • a[:]: 전체 어레이의 복사본을 생성합니다.

2. Step 이용 

  • a[start:stop:step]: start부터 시작하여 step-1까지의 step별 아이템을 선택합니다.

3.  음수 인덱스 

  • a[-1]: 어레이의 마지막 아이템을 선택합니다.
  • a[-2:]: 어레이의 마지막 두 개의 아이템을 선택합니다.
  • a[:-2]: 마지막 두 개의 아이템을 제외한 모든 아이템을 선택합니다

4. 역순 슬라이싱

  • a[::-1]: 어레이의 모든 아이템을 역순으로 선택합니다.
  • a[1::-1]: 처음 두 개의 아이템을 역순으로 선택합니다.
  • a[:-3:-1]: 마지막 두 개의 아이템을 역순으로 선택합니다.
  • a[-3::-1]: 마지막 두 개의 아이템을 제외한 모든 아이템을 역순으로 선택합니다.

5. 예시

 - 리스트(List) 슬라이싱

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 인덱스 2부터 5(포함하지 않음)까지의 요소를 선택
print(my_list[2:5])  # 출력: [2, 3, 4]

# 리스트의 처음부터 인덱스 5까지의 요소를 선택
print(my_list[:5])   # 출력: [0, 1, 2, 3, 4]

# 인덱스 5부터 끝까지의 요소를 선택
print(my_list[5:])   # 출력: [5, 6, 7, 8, 9]

# 인덱스 1부터 끝까지의 요소를 하나 건너뛰며 선택
print(my_list[1::2])  # 출력: [1, 3, 5, 7, 9]

# 리스트를 역순으로 출력
print(my_list[::-1])  # 출력: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

 

 - 문자열(String) 슬라이싱

my_string = "Hello, World!"

# 문자열의 인덱스 7부터 12(포함하지 않음)까지의 부분 문자열을 선택
print(my_string[7:12])  # 출력: World

# 문자열의 처음부터 인덱스 5까지의 부분 문자열을 선택
print(my_string[:5])    # 출력: Hello

# 인덱스 7부터 끝까지의 부분 문자열을 선택
print(my_string[7:])    # 출력: World!

# 문자열을 역순으로 출력
print(my_string[::-1])  # 출력: !dlroW ,olleH
반응형

'python' 카테고리의 다른 글

python 자주 사용하는 문자열 함수  (0) 2024.04.02
Python Dictionary  (0) 2024.03.28
Type Hints  (0) 2024.03.25
Dictionary Comprehension  (0) 2024.03.23
List Comprehension  (0) 2024.03.23

+ Recent posts