python-3.x - 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]
解决方案
哇,这是一个非常有趣的问题,我发现了这个问题,就在这一行:
List3=list(set(List2))
问题是 set 正在改变列表的顺序:
>>> set([1, 48])
{48, 1}
>>> set([1, 50])
{1, 50}
所以解决方案就是删除它,set()
然后做List3 = list(List2)
. 我猜你得到不同订单的原因是因为一个集合不跟踪订单,因为它是作为哈希表实现的。
推荐阅读
- mysql - IF 3 或更多条件 QUERY MySQL
- python - Flask 上的 APScheduler 用于获取数据并保存在停止的位置
- python - 如何在 Python 中找到图形或矩阵的最大连通区域?
- intellij-idea - IntelliJ lombok 插件不兼容
- python - 合并两个具有不同键的字典列表
- c - 我们如何在 C 中删除数组中的重复元素?
- r - 在数据帧上执行延迟操作以计算 R 中的新值
- javascript - 用 while 和 reduce 变换对象数组
- ada - 如何使用 Ada 双向链表
- tags - 为什么此代码在 blogspot 网站上不起作用?