#python
#python
Вопрос:
У меня есть этот код. Все в порядке, но он не выводит нужные значения. Я думаю, что что-то не так в вызове функции, но я не могу понять это. этот код удаляет средний элемент, если длина списка нечетная, или два средних элемента, если длина четная. Это код,
One_Ten = [1,2,3,4,5,6,7,8,9,10]
def removeMiddle(data:list)-> list:
index = 0
size = len(data)
index = size // 2
if (size % 2 == 0 ):
data = data[:index-1] data[index 1:]
if (size % 2 == 1):
data.pop(index)
return data
data = list(One_Ten)
removeMiddle(data)
print("After removing the middle element (s):why ", data)
таким образом, желаемый результат должен выглядеть как
[1,2,3,4,7,8,9,10]
Комментарии:
1.
data = data[:index-1] data[index 1:]
не изменяет переданный список. Он создает новый список; который вы затемreturn
, но вы ничего не делаете со значениемreturn
ed.2. но когда я печатаю (данные) прямо перед возвратом, он выводит правильные значения
3. Как @KarlKnechtel говорит, вам нужно что-то вроде
result = removeMiddle(data)
andprint(result)
. КстатиremoveMiddle
, иOne_Ten
не являются подходящими именами Python — вы окажете себе услугу, изучив соглашения об именовании Python на ранней стадии4.
data
Внутренняя функция — это не та же переменная,data
что и внешняя — у них одинаковое имя, и изначально они указывают на один и тот же список, но это меняется, когда вы переназначаете его в функции.data
это просто имя для списка, и вы используете это имя дважды.5. я только что выполнил data = removeMiddle(данные), и он напечатал ok. это нормально?
Ответ №1:
Вам просто нужно присвоить data
ему новое значение,
data = removeMiddle(data)
Ответ №2:
Кроме того, вы можете установить функцию на место, отредактировав первые условия
if (size % 2 == 0):
data.pop(index)
data.pop(index-1)