Есть ли у меня способ зациклить функцию добавления с разными элементами?

#python

#python

Вопрос:

Я не уверен, правильно ли я формулирую это, потому что я не очень хорошо знаком с терминами кодирования. Есть ли способ для меня зациклить функцию добавления с разными элементами в списке? по сути, я хочу зациклить этот код, не удаляя оператор return .

 def create_party(party,candidates):      
    suggested_parties = party             
    suggested_parties.append(candidates[0])
    print(suggested_parties)          
    suggested_parties.pop()                
    suggested_parties.append(candidates[1]) 
    print(suggested_parties)                
    suggested_parties.pop()                 
    suggested_parties.append(candidates[2]) 
    return suggested_parties     
  

Вывод должен выглядеть следующим образом:

 [a,b,c,d,e,f]
[a,b,c,d,e,g]
[a,b,c,d,e,h] 
  

предполагая, что

 party = [a,b,c,d,e] 
candidates[0] is f
candidates[1] is g
candidates[2] is h
  

Ответ №1:

вы можете использовать цикл for следующим образом:

 def create_party(party,candidates):
   for item in candidates:
      print(party   list(item))
  

При этом исходный список печатается вместе со следующим элементом в кандидатах как один список.

Итак, следующее:

 party = ["a", "b", "c", "d", "e"]
candidates = ["1", "2", "3"]


def create_party(party, candidates):
    for item in candidates:
        print(party   list(item))


create_party(party, candidates)
  

С принтами:

 ['a', 'b', 'c', 'd', 'e', '1']
['a', 'b', 'c', 'd', 'e', '2']
['a', 'b', 'c', 'd', 'e', '3']
  

Ответ №2:

Используйте for цикл.

 def create_party(party,candidates):
    for candidate in candidates[:-1]:
        party.append(candidate)
        print(party)
        party.pop()
    party.append(candidates[-1])
    return party
  

Нет необходимости создавать новую переменную suggested_parties , вы можете использовать ту же party переменную.

Поскольку вы не хотите печатать возвращаемый список, цикл повторяется по фрагменту candidates списка, который не включает последний элемент. Затем он добавляет последний элемент и возвращает его.

Комментарии:

1. использование append и pop абсолютно избыточно

2. разве это не создало бы 4 списка, причем 3 и 4 являются одним и тем же списком, поскольку вы возвращаете партию? Мне было интересно, смогу ли я распечатать только 3 списка, не удаляя оператор return.

3. @snatchysquid Я знаю, я просто показывал оператору, как сделать то же самое, что и код в вопросе, но с использованием цикла.

4. @Moyk Это не создает никаких списков. append() и pop() просто измените существующий список.

5. @Barmar Я имел в виду, что с помощью оператора return вывод будет выглядеть как [a, b, c, d, e,f] [a,b, c, d, e, g] [a, b, c, d, e, h] [a, b, c, d, e, h] [a, b, c,d, e,h] Причина, по которой я задал эту проблему, заключается в том, что я хотел найти способ зациклить код, не удаляя оператор return . Вот почему в моем исходном коде (том, что в сообщении) есть 2 print и 1 return, чтобы получить вывод, который выглядит следующим образом: [a, b, c, d, e, f] [a, b, c, d, e, g] [a,b, c, d, e, h] Надеюсь, я понимаю смысл.