Проблемы с вставкой в ​​Python 3 - PullRequest
0 голосов
/ 05 октября 2018

Итак, я только начал изучать Python и новичок в программировании в целом.Я делаю код, чтобы ответить на учебный код Hackerrank "Списки" ( Здесь )

У меня проблемы с использованием списков, и я создал программу для редактирования списка несколько раз, но дляПо какой-то причине, если я использую .insert (), он работает с одними входами, но не с другими.Я прошу прощения, если это плохо объяснено.

Если я введу «insert 1 55», он вставит 55 в ML 1 , однако, если я наберу «insert 1 48», это добавит 1 к ML 1 , поэтому я не понимаю, почему он по-разному реагирует на различные значения ввода.

Любая помощь будет высоко оценена!


import math

ML=[]

while True:
 try:
  List1=input().split()
  List2=map(int, List1[1:])
  List3=list(set(List2))

  if List1[0]=="insert":
   ML.insert((List3[0]), (List3[1]))
  elif List1[0]=="print":
   print(ML)
  elif List1[0]=="remove":
   ML.remove(List3[0])
  elif List1[0]=="append":
   ML.append(List3[0])
  elif List1[0]=="sort":
   ML.sort()
  elif List1[0]=="pop":
   ML.pop()
  elif List1[0]=="reverse":
   ML.reverse()
  else:
   pass
 except ValueError:
  print("oops")

Вывод:

вставка 1 55

Печать

[55]

Вставка 1 44

Печать

[55, 44]

Вставка 1 48

Печать

[55, 44, 1]

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я проверил ваш код, и кажется, логика!Есть проблема только для 48. Я не знаю почему, пока не знаю.но вы можете использовать это, чтобы исправить это.чтобы исправить это, используйте: List3 = list (List2)

0 голосов
/ 05 октября 2018

Ого, это был очень интересный вопрос, я разобрался с проблемой, она в этой строке:

List3=list(set(List2))

Проблема в том, что набор меняет порядок списка:

>>> set([1, 48])
{48, 1}
>>> set([1, 50])
{1, 50}

Таким образом, решение просто удалить это set() и просто сделать List3 = list(List2).Я предполагаю, что причина, по которой вы получаете другой порядок, состоит в том, что набор не отслеживает порядок, поскольку он реализован как хеш-таблица.

...