gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:49 27 4
gpt4 key购买 nike

我正在尝试解决 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

它删除了 a[47] 并将其放在另一个位置,同时删除了 i 到 j。我不知道为什么 a[47] 被上面指定的代码删除了。 remove() 有问题吗?

我需要什么帮助

我并不是要为我解决问题。我试图理解为什么 remove() 无法正常工作。逻辑上说它不应该从 i 到 j 中删除任何东西,但它确实是。非常感谢任何帮助。

最佳答案

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

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

关于arrays - 为什么 Python 从数组中随机删除数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com