首页 > 解决方案 > Python 3 插入问题

问题描述

所以我刚刚开始学习 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]

标签: python-3.xlistwhile-loopinserttry-catch

解决方案


哇,这是一个非常有趣的问题,我发现了这个问题,就在这一行:

List3=list(set(List2))

问题是 set 正在改变列表的顺序:

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

所以解决方案就是删除它,set()然后做List3 = list(List2). 我猜你得到不同订单的原因是因为一个集合不跟踪订单,因为它是作为哈希表实现的。


推荐阅读