python: я хочу избегать использования модуля 'copy' - PullRequest
0 голосов
/ 10 мая 2018

(приведенный ниже код не является рабочим кодом. Он просто для передачи идей) Мое намерение состоит в том, чтобы рекурсивно вызывать sumsubset (arr.remove (el), num, org), анализируя обновленный arr.Однако это приведет к нежелательному удалению исходного значения arr, что приведет к ошибке.Итак, я часто полагаюсь на модуль копирования, чувствуя себя несколько неловко.

Есть ли лучший способ парсинга обновленного arr без использования модуля копирования?Спасибо за ответ на мой первый вопрос.

arr=[1, 1, 2, 4, 4, 4, 7, 9, 9, 13, 13, 13, 15, 15, 16, 16, 16, 19, 19, 20]
num=36

import copy

def sumsubset(arr,num,org):

    for el in arr:
        if el==org:    return [el]

        tmp=copy.copy(arr)
        tmp.remove(el)
        result=[el]+sumsubset(tmp,num-el,org)

    return result

a=sumsubset(arr,36,36)

1 Ответ

0 голосов
/ 10 мая 2018
tmp = arr[:]

или

tmp = list(arr)

И то, и другое создаст новый объект, а не просто скопирует ссылку на оригинал arr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...