#python
#python
Вопрос:
Я действительно новичок в этом и нуждаюсь в некоторой помощи. Я пытаюсь удалить ‘al’ из моего dinner_list, а затем добавить ‘roger’ на его место.
dinner_list = ['frank', 'carole', 'jimmy', 'al']
message = f"{dinner_list[0].title()} you are invited to join me for dinner on 9/9."
message1 = f"{dinner_list[1].title()} you are invited to join me for dinner on 9/9."
message2 = f"{dinner_list[2].title()} you are invited to join me for dinner on 9/9."
message3 = f"{dinner_list[3].title()} you are invited to join me for dinner on 9/9."
#print(message)
#print(message1)
#print(message2)
#print(message3)
print('Al cannot make it.')
del dinner_list[3]
dinner_list.append('roger')
print(message)
print(message1)
print(message2)
print(message3)
Ответ №1:
В Python доступно несколько методов, которые позволяют удалять элементы из списка.
remove()
Метод удалит первый экземпляр значения в списке.
list = [1, 2, 3, 1]
list.remove(1) # [2, 3, 1]
pop()
Метод удаляет элемент с заданным индексом, а также возвращает удаленный элемент.
numbers = [10, 20, 30, 40]
ten = numbers.pop(0)
print(ten) # 10
Вы также можете использовать del
ключевое слово в Python, чтобы удалить элемент или фрагмент из списка.
numbers = [50, 60, 70, 80]
del numbers[1:2]
print(numbers) # [50, 70, 80]
Еще один способ удаления элементов из списка — взять фрагмент списка, который исключает индекс или индексы элемента или элементов, которые вы пытаетесь удалить. Например, чтобы удалить первые два элемента списка, вы можете сделать
list = list[2:]
Ответ №2:
F-строки не переоценивают себя постоянно. Они устанавливаются один раз и после этого не реагируют на изменения. Вы можете увидеть это здесь:
n = [1]
string = f"{n}"
print(string)
n[0] = 2
print(string)
Это печатает:
[1]
[1]
Если вы хотите, чтобы сообщения обновлялись, вам нужно сделать это вручную. Я бы обернул сообщение и напечатал код в функцию, а затем вызвал функцию:
def print_messages():
message = f"{dinner_list[0].title()} you are invited to join me for dinner on 9/9."
message1 = f"{dinner_list[1].title()} you are invited to join me for dinner on 9/9."
message2 = f"{dinner_list[2].title()} you are invited to join me for dinner on 9/9."
message3 = f"{dinner_list[3].title()} you are invited to join me for dinner on 9/9."
print(message)
print(message1)
print(message2)
print(message3)
print_messages()
print('Al cannot make it.')
del dinner_list[3]
dinner_list.append('roger')
print_messages()
Есть гораздо более аккуратные способы сделать это с использованием списка, но это дает общее представление.
Комментарии:
1. Спасибо, что объяснили это. Очень помогает.
Ответ №3:
Вы хотите list.remove
, который принимает входные данные и удаляет их, если они присутствуют в списке. Таким образом, вам также не нужно беспокоиться об индексах.
l = ['a', 'b', 'c']
l.remove('a')
l
Тогда ['b', 'c']
список.
Ответ №4:
Эл уже удален, а Роджер добавлен в ваш список. Проблема в том, что вы устанавливаете message3 в начале, когда последний элемент списка все еще Al. И после того, как вы удалите Al из списка и добавите roger в список, это никак не повлияет на переменную message3. Я надеюсь, что это имеет смысл.
Ответ №5:
Ваш код успешно заменяет ‘al’ на ‘roger’, но строки сообщения были созданы до того, как al был заменен на roger, поэтому они не отражают изменения в вашем списке.
Кроме того, ваши строки del и append будут работать только в том случае, если список обедов состоит из четырех элементов, а al является последним элементом. Один из способов заменить ‘al’ на ‘roger’ для любого списка имен — это выполнить следующее:
dinner_list = ['frank', 'carole', 'jimmy', 'al']
dinner_list[dinner_list.index('al')] = 'roger'
for guest in dinner_list:
print (f"{guest} you are invited to join me for dinner on 9/9.")
.index() возвращает индекс первого вхождения ‘al’ в списке.