为什么Python从数组中随机删除数字?

时间:2015-11-08 23:50:01

标签: arrays algorithm python-2.7

我正在尝试解决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中删除任何东西,但事实确实如此。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

数组上的.remove方法不会按索引删除元素,而是删除它们的值。如果要删除部分列表,请使用del运算符(例如del a[5]删除第六个元素,使用del a[1:4]删除第二,第三和第四个元素)。< / p>

(至于有效地解决这个问题:如果以相反的顺序查看操作,我认为你不必实际操作数组。)