编写一个程序,在特定位置的数组中插入一个元素,不要在python中使用任何功能。

2024-04-27 04:07:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在任何特定的位置添加任何特定的数字。因此,当我提出解决方案时,会得到索引超出范围或列表超出范围(python中的列表和数组是动态增长的)。你知道吗

from array import *
a = int(input("how many number you want to inout in an arery"))
ary = array('i',[])
for i in range(a):
    d = int(input("enter number")) # suppose i take [2,5,4,3,8]
    ary.append(d)
pos = int(input("Enter position number")) #i take position is 4
val = int(input("enter value number"))    # and value is 10
c = a-1
while(c >= pos-1):
    ary[c+1] = ary[c]
    c-=1
ary[pos-1]= val
print(ary)

[2,5,4,10,3,8]

Tags: inposnumber列表inputisvalueposition
2条回答

切片怎么样?灵感来自于你如何用list来做这件事。下面在位置2添加值100(从0而不是1索引)

>>> a = array('i',[1,2,3,4,5])
>>> value = 100
>>> pos = 2  # 0-based
>>> a = array('i', a[:pos]) + array('i', [value]) + array('i', a[pos:])
>>> a
array('i', [1, 2, 100, 3, 4, 5])

请注意,我对array并不熟悉,但据我所知,它们的行为似乎类似于lists。因此,上面的插入方式可能不是最有效的,因为它创建了3个新数组并将它们连接到a

出现此错误消息的原因是数组的大小随着1的增加而增加,因为您添加了一个新值,但忘记了实际将该位置添加到数组中。所以,要解决你的问题,你需要添加一个位置,然后做相应的动作。你知道吗

算法如下:

  1. 将位置附加到数组中
  2. 将上一个数组的最后一个数添加到新数组中
  3. 在数组中循环,从末端到位置,并将数字向末端移动一个位置
  4. 当你到达这个位置时,你插入从键盘上读出的数字。你知道吗

在Python中,代码是:

from array import *

a = int(input("how many numbers you want to input in an array? "))
ary = array('i', [])
for i in range(a):
    d = int(input("enter number"))  # suppose i take [2,5,4,3,8]
    ary.append(d)
pos = int(input("Enter position number"))  # i take position is 4
val = int(input("enter value number"))  # and value is 10
ary.append(ary[len(ary) - 1]) 
x = len(ary) - 1
while x >= pos:
    ary[x] = ary[x - 1]
    x -= 1
ary[pos - 1] = val
print(ary)

另一件事:ary是整个数组。ary[2]是数组中的第三个元素。可以附加到数组,但不能附加到数组的某个位置。因此,分配如下:

ary[2].append(whatever)

这是错误的。你知道吗

相关问题 更多 >