Member 12939713 Ответов: 3

Как добавить два списка вместе, чтобы создать один окончательный список


У меня есть два списка один называется свободные часы и один называется hoursbookedlist и я хочу добавить их вместе в список под названием общее количество забронированных часов

#Импорт Времени
импорт случайный
время импорта

freehours = []
nameslist = []
hoursbookedlist = []
totalhoursbooked = []
для студента в диапазоне (7):
name = input ("введите имя студента ")
hoursbooked = int (input ("введите количество часов, забронированных для студентов "))
в то время как (hoursbooked < 10):
print ("пожалуйста, повторно введите количество забронированных часов: ")
hoursbooked = int (input ("пожалуйста, количество часов, которые были забронированы для stundent1 "))
если hoursbooked > 10 и hoursbooked < 15:
freehours. append(1)
elif int(hoursbooked >=15):
freehours. append(2)

nameslist. append(имя)
hoursbookedlist. append(hoursbooked)

totalhoursbooked = freehours + hoursbookedlist


print ("student \t hoursbooked \t freehours \t totalhoursbooked")
для i в диапазоне (7):
print (nameslist[i], "\t", "\t", hoursbookedlist[i],"\t"," \ t", freehours[i], "\t"," \ t", totalhoursbooked[i])

Что я уже пробовал:

Я попробовал просто сделать totalhoursbooked = freehourslist + hoursbookedlist

Thomas Daniels

Я не уверен, что понимаю, о чем вы спрашиваете... Вы имеете в виду, что вам просто нужен новый список с тем же количеством элементов, что и freehourslist и hoursbookedlist, и каждый элемент в totalhoursbooked является суммой соответствующих элементов в freehourslist и hoursbookedlist? Например, если у вас есть [1, 1, 1, 1, 1, 1, 1] и [11, 12, 13, 14, 11, 12, 13], вы хотите иметь [12, 13, 14, 15, 12, 13, 14]?

Member 12939713

да именно так

3 Ответов

Рейтинг:
1

Thomas Daniels

Есть несколько различных способов сделать это.

Самый простой способ - это использование цикла, Как уже упоминалось в комментарии Ричарда.

Вы также можете использовать operator.add и map команда:

import operator
totalhoursbooked = list(map(operator.add, freehourslist, hoursbookedlist))
См. документацию по карта[^]:
Цитата:
Возвращает итератор, который применяет функцию к каждому элементу iterable, получая результаты.
Затем list функция преобразует этот итератор в список.

Вы также можете использовать комбинацию понимание списка[^] и функция молнии[^].
totalhoursbooked = [a + b for a, b in zip(freehourslist, hoursbookedlist)]
Zip создает итератор, который агрегирует элементы из каждой итерации, передаваемой в качестве аргументов. (Если бы вы обратили zip возвращая значение в список, вы увидите список кортежей, где каждый кортеж содержит элемент из freehourslist с соответствующим элементом hoursbookedlist).


Peter Leow

Это более всеобъемлюще, 5ed!

Thomas Daniels

Спасибо.

Рейтинг:
0

Richard MacCutchan

У вас уже есть ответ на этот вопрос по адресу Как я могу получить предметный указатель, список нашего ассортимента ошибки на Python[^Пожалуйста, не перепечатывайте; если у вас есть информация для добавления, то отредактируйте свой первоначальный вопрос.


Thomas Daniels

На самом деле это другой вопрос... но опять же, я не совсем понимаю, о чем он спрашивает.

Member 12939713

как вы не понимаете, как я добавляю свободные часы и часы, забронированные для вас, так что в общем списке забронированных часов у меня есть ответы

Richard MacCutchan

Вы имеете в виду добавить два списка или добавить содержимое? Если последнее то это сделает простой цикл:
Скрыть   скопировать код

for i in range(len(freehourslist)):
    totalhoursbooked.append(freehourslist[i] + hoursbookedlist[i])

См. отличное решение Питера Леоу ниже.

Member 12939713

хорошо но куда в программе это идет и наверху мне нужно totalhoursbooked = []

Richard MacCutchan

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

Peter Leow

5ed за отличную командную работу!

Richard MacCutchan

Но твой ответ был намного элегантнее.

Рейтинг:
0

Peter Leow

Попробуйте приспособиться к этому примеру:

list1 = [1,2,3,4]
list2 = [5,6,7,8]
list3 = [sum(x) for x in zip(list1, list2)]

Узнайте больше о zip в Python[^]


Member 12939713

спасибо мне удалось