Неправильный вывод поп-функции - PullRequest
0 голосов
/ 14 марта 2019

При использовании функции pop для чтения значения из определенного списка, я не получаю желаемого результата.

Мой код:

intList = [1, 5, 4, 9, 7, 2, 15]

def manipfunc(a):
      j = a.index(2)
      a.append(6.08)
      a.remove(4)
      a.insert(2,67)
      g = a.pop(3)
      print(a)
      print(j, g)

 manipfunc(intList)

Здесь g should be 7. but I'm getting g = 9.

Если кто-то может объяснить, это было бы очень полезно. Использование поп-функции. Код и выход

Ответы [ 5 ]

2 голосов
/ 14 марта 2019

Пойдем шаг за шагом:

a = [1, 5, 4, 9, 7, 2, 15]
j = a.index(2) #5
a.append(6.08) #[1, 5, 4, 9, 7, 2, 15, 6.08]
a.remove(4) #[1, 5, 9, 7, 2, 15, 6.08]
a.insert(2,67) #[1, 5, 67, 9, 7, 2, 15, 6.08]

Теперь мы приходим к g = a.pop(3) и a[3] = 9.

Выглядит как правильный вывод для меня.

0 голосов
/ 14 марта 2019

Функция pop принимает индекс в качестве аргумента.

0 голосов
/ 14 марта 2019

Это результат каждого шага в вашем коде:

intList = [1, 5, 4, 9, 7, 2, 15]
def manipfunc(a):
    j = a.index(2)
    print ("j: ",j)
    a.append(6.08)
    print ("intList: ",a)
    a.remove(4)
    print ("intList: ",a)
    a.insert(2,67)
    print ("intList: ",a)
    g = a.pop(3)
    print ("g: ",g)
manipfunc(intList)

Вывод:

j:  5
intList:  [1, 5, 4, 9, 7, 2, 15, 6.08]
intList:  [1, 5, 9, 7, 2, 15, 6.08]
intList:  [1, 5, 67, 9, 7, 2, 15, 6.08]
g:  9

Теперь вы можете понять, почему 9 приходит к результату.

0 голосов
/ 14 марта 2019

Когда вы вводите функцию

  1. j = 4
  2. , вы добавляете 6,08 в конце массива
  3. , после чего вы удаляете 4, и вектор становится[1, 5, 9, 7, 2, 15, 6,08]
  4. Вы вставляете 67 в позицию 2, и вектор становится: [1, 5, 67, 9, 7, 2, 15, 6,08]
  5. вы выдвигаете 3 позицию и получаете 9

, когда вы печатаете, вы получаете [1, 5, 67, 7, 2, 15, 6.08] и после этого вы получаете5 и 9

вы должны попытаться выдвинуть 4, а не 3.

intList = [1, 5, 4, 9, 7, 2, 15]
def manipfunc(a):
    j = a.index(2)
    a.append(6.08)
    a.remove(4)
    a.insert(2,67)
    g = a.pop(4)
    print(a)
    print(j, g)

manipfunc(intList)

вы должны быть осторожны с a.remove(4)

или, возможно, ваша ошибка здесь: a.insert(2,67) запомните эту инструкцию, поместите значение в этот индекс и измените индекс остальной части массива.

0 голосов
/ 14 марта 2019

Возможно, вы неправильно поняли этот метод list.remove (x)

Удалите первый элемент из списка, значение которого равно x.Возникает ошибка ValueError, если такого элемента нет.от python3.7 doc https://docs.python.org/3/tutorial/datastructures.html#using-lists-as-stacks

...