스택큐힙리스트

생성기 또는 목록에서 처음 N 항목을 가져오는 방법은 무엇인가요? [중복] 본문

카테고리 없음

생성기 또는 목록에서 처음 N 항목을 가져오는 방법은 무엇인가요? [중복]

스택큐힙리스트 2023. 3. 31. 10:19
반응형

이 질문에는 이미 답변이 있습니다.

How to get the n next values of a generator into a list

1. 번역하세요.

2. 한국어로 번역해주세요.

3. 한글로 번역해주세요.

4. 번역해 주세요.

5. 한국어로 바꿔주세요.

Fetch first 10 results from a list in Python

1. 한국어로 번역해주세요.

2. 한글로 바꿔주세요.

3. 한국말로 변역 부탁드립니다.

4. 한국어로 바꿔서 말씀해주세요.

지난 달에 닫혔습니다.

linq를 가지고 있다면

var top5 = array.Take(5);

파이썬으로 이걸 어떻게 하나요?

답변 1

리스트 자르기

top5 = array[:5]

리스트를 슬라이스하기 위해서는 간단한 문법이 있습니다: array[start:stop:step]

어떤 매개변수도 제외할 수 있습니다. 이것들 모두 유효합니다: array[start:], array[:stop], array[::step]

발전기 자르기

import itertools

top5 = itertools.islice(my_list, 5) # grab the first five elements

파이썬에서 제너레이터를 직접 슬라이스할 수는 없습니다. itertools.islice()은 객체를 새로운 슬라이싱 제너레이터로 래핑하여 itertools.islice(generator, start, stop, step) 구문을 사용합니다.

기억하세요, 제너레이터를 슬라이스하면 일부가 소진됩니다. 전체 제너레이터를 유지하려면 먼저 튜플이나 리스트로 변환하는 것이 좋습니다. 예를 들어: result = tuple(generator)

답변 2

어떻게 발생기나 목록에서 처음 N개의 항목을 가져올 수 있을까요?

발생기나 목록이 매우 크거나 무한할 수 있다는 이유로 제한된 양의 항목을 처리하기 위해 처음 N개의 항목 중 일부만 가져오려는 경우가 종종 있습니다. 이 문제는 일반적으로 다음과 같은 상황에서 발생합니다.

1. 입력 데이터가 너무 많아서 모두 처리할 수 없는 경우

2. 계산의 범위가 제한되어 있거나 제한된 시간 또는 메모리로 인해 일부만 처리해야 하는 경우

3. 어떤 작업을 수행하기 위해 처음 몇 개의 결과만 필요할 때

이러한 상황에서는 일반적으로 파이썬의 발생기를 사용하여 구현합니다. 발생기는 필요한 만큼의 항목만 생성하므로 메모리 부담이 적습니다. 이를 위해 다음과 같이하면 가능합니다.

```

def first_n_items(iterable, n):

for item in iterable:

yield item

if n == 1:

return

n -= 1

```

이 함수는 입력으로 발생기와 가져올 항목 수를 받습니다. 그런 다음 for 루프를 사용하여 항목을 하나씩 출력하고 제네레이터를 반환합니다. 제네레이터는 항목이 필요할 때마다 순차적으로 생성되므로 메모리를 적게 사용합니다.

또한 목록에서 처리해야 하는 경우에는 슬라이싱을 사용할 수 있습니다. 예를 들어, `my_list[:n]`는 목록의 처음 n개의 항목을 가져옵니다.

이러한 방법을 사용하여 파이썬에서 발생기나 목록의 처음 N개의 항목을 쉽게 가져올 수 있으며, 이를 통해 메모리 부담을 줄이고 작업 결과를 빠르게 처리할 수 있습니다.

반응형
Comments