Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 리스트에서 홀수 요소를 두 번 반복하여 추가하는 방법

개요

이 글에서는 홀수를 요소로 포함하는 리스트가 주어졌을 때, 해당 홀수 요소들을 같은 리스트 안에 한 번 더 반복해서 추가하는 방법을 알아봅니다. 즉, 어떤 홀수가 리스트에 두 번 등장한다면 처리 후에는 동일한 리스트에서 네 번 등장하게 되는 것입니다.

이러한 요구 사항을 구현하는 방법은 여러 가지가 있습니다. for 루프와 in 조건을 활용할 수도 있고, itertools 모듈이나 numpy 모듈의 도움을 받을 수도 있습니다. 홀수 여부는 각 요소를 2로 나누었을 때의 나머지를 확인하여 판별합니다.

예제 코드

아래 예제에서는 세 가지 서로 다른 접근 방식을 사용하여 홀수 요소를 반복 추가합니다.

from itertools import chain
import numpy as np

data_1 = [2,11,5,24,5]
data_2 = [-1,-2,-9,-12]
data_3 = [27/3,49/7,25/5]
odd_repeat_element_3 = []

# 방법 1: for 루프와 in 조건(리스트 컴프리헨션) 사용
odd_repeat_element = [values for i in data_1 for values in (i, )*(i % 2 + 1)]

print("Given input values:'", data_1)
print("List with odd number repeated values:", odd_repeat_element)

# 방법 2: itertools의 chain 사용
odd_repeat_element_2 = list(chain.from_iterable([n]
if n % 2 == 0 else [n]*2 for n in data_2))

print("\nGiven input values:'", data_2)
print("List with odd number repeated values:", odd_repeat_element_2)

# 방법 3: numpy의 extend와 repeat 사용
for m in data_3:
    (odd_repeat_element_3.extend(np.repeat(m, 2, axis = 0))
if m % 2 == 1 else odd_repeat_element_3.append(m))

print("\nGiven input values:'", data_3)
print("List with odd number repeated values:", odd_repeat_element_3)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Given input values:' [2, 11, 5, 24, 5]
List with odd number repeated values: [2, 11, 11, 5, 5, 24, 5, 5]

Given input values:' [-1, -2, -9, -12]
List with odd number repeated values: [-1, -1, -2, -9, -9, -12]

Given input values:' [9.0, 7.0, 5.0]
List with odd number repeated values: [9.0, 9.0, 7.0, 7.0, 5.0, 5.0]

코드 설명

방법 1: 리스트 컴프리헨션 활용

(i, ) * (i % 2 + 1) 표현식이 핵심입니다. 요소가 홀수라면 i % 2가 1이 되어 튜플이 두 번 반복되고, 짝수라면 0이 되어 한 번만 반복됩니다. 이를 통해 조건문 없이 간결하게 홀수만 두 번 추가할 수 있습니다.

방법 2: itertools.chain 활용

chain.from_iterable()은 여러 개의 iterable을 하나로 연결해 줍니다. 각 요소에 대해 홀수인 경우 [n]*2로 두 번 반복된 리스트를 만들고, 짝수인 경우 그대로 [n]을 반환한 뒤 이를 하나의 리스트로 병합합니다.

방법 3: numpy.repeat 활용

np.repeat(m, 2, axis=0)은 값 m을 두 번 반복한 배열을 생성합니다. 삼항 조건식을 통해 홀수일 때는 extend로 두 개의 값을 추가하고, 짝수일 때는 append로 한 번만 추가합니다.

마무리

세 가지 방법 모두 동일한 목적을 달성하지만, 상황에 따라 적합한 방식이 다릅니다. 간단한 리스트 처리에는 리스트 컴프리헨션이 가독성 면에서 유리하고, 대량의 데이터를 다룰 때는 numpy를 활용하는 것이 성능 면에서 효율적입니다. 자신의 프로젝트 요구 사항에 맞는 방법을 선택하여 활용해 보시기 바랍니다.