我正在尝试解决HackerRank.com上的一个复杂问题,该问题涉及创建一个接受小型和大型数据数组的解决方案,范围从10个整数到99,000个整数。
在这里找到问题 - > https://www.hackerrank.com/challenges/array-and-simple-queries
问题
如何简单地说,我已经取了一个数组,从用户指定的数组中复制一系列数字,然后将它附加到一个新数组。
i = 2
j = 4
a = [1, 2, 3, 4, 5, 6, 7, 8]
for numbers in range(i, j + 1):
b.append(a[numbers - 1])
数字范围附加到b []数组。在上面的例子中,这应该是2,3,4。现在我想从a []数组中删除()2,3,4。这是我遇到问题的地方。
for numbers in range(i, j + 1):
a.remove(a[i-1])
这应该删除数字2,3,4并将a []数组保留为1,5,6,7,8。这在大多数情况下适用于指定。
然而,在较大的阵列中,例如500的长度。我看到a.remove()随机删除不在i,j + 1范围内的数字。
实施例
i = 239
j = 422
删除[47]并将其放在另一个位置,同时删除i到j。我没有想法为什么用上面指定的代码删除[47]。是remove()车吗?
我需要帮助
我没有试图解决问题。我试图了解为什么remove()无法正常工作。逻辑说它不应该从i到j中删除任何东西,但事实确实如此。非常感谢任何帮助。
答案 0 :(得分:1)
数组上的.remove
方法不会按索引删除元素,而是删除它们的值。如果要删除部分列表,请使用del
运算符(例如del a[5]
删除第六个元素,使用del a[1:4]
删除第二,第三和第四个元素)。< / p>
(至于有效地解决这个问题:如果以相反的顺序查看操作,我认为你不必实际操作数组。)