Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在没有本机函数的数组中的特定位置插入元素_Python_Algorithm - Fatal编程技术网

Python 在没有本机函数的数组中的特定位置插入元素

Python 在没有本机函数的数组中的特定位置插入元素,python,algorithm,Python,Algorithm,我正在练习一些算法挑战,我发现自己在其中一个问题上遇到了麻烦: 其主要思想是能够在数组的特定位置插入元素,但我不想使用类似insert()或append()的python本机函数。为此,我声明了一个固定长度的空数组,作为第一个操作,从数组允许的总数中加载一半的元素 所有这些都在一个函数中,该函数接收数组和我要插入此元素的位置。简单地说,我的函数验证加载元素的计数是否低于数组的总长度,以及位置是否有效,修改数组的长度以插入新元素 我不明白为什么我会得到这样的回应。我想不出解决问题的办法 下面是我的

我正在练习一些算法挑战,我发现自己在其中一个问题上遇到了麻烦: 其主要思想是能够在数组的特定位置插入元素,但我不想使用类似insert()或append()的python本机函数。为此,我声明了一个固定长度的空数组,作为第一个操作,从数组允许的总数中加载一半的元素

所有这些都在一个函数中,该函数接收数组和我要插入此元素的位置。简单地说,我的函数验证加载元素的计数是否低于数组的总长度,以及位置是否有效,修改数组的长度以插入新元素

我不明白为什么我会得到这样的回应。我想不出解决问题的办法

下面是我的代码:

def array_load(list_value, pos):
  element_loaded = 0
  array_length = len(list_value)
  
  while(element_loaded <= array_length - 4):
    print("Please enter a number: ")
    num = input()
    list_value[element_loaded] = num
    element_loaded += 1
    print(f'ELEMENT LOADED COUNT: {element_loaded}')

  if array_length > element_loaded and pos <= array_length - 1:
    print(f'Please enter a number for position: {pos}')
    extra_num = input()
    for i in range(pos, element_loaded):
      list_value[i+1] = list_value[i]
      list_value[pos] = extra_num
      element_loaded += 1

  print(list_value)

array_value = [''] * 6
array_load(array_value, 1)


将数字“0”插入位置1,我得到:

['324', '0', '2', '2', '', '']
我希望得到:

['324', '0', '2', '5', '', '']
如果我想在位置[0]中插入“0”,我希望得到以下结果:

['0', 324', '2', '5', '', '']

以此类推,问题在于如何在“中间”插入数字。此循环:

for i in range(pos, element_loaded):
  list_value[i+1] = list_value[i]
  list_value[pos] = extra_num
  element_loaded += 1
将首先用
pos
中的值覆盖索引
pos+1
。在下一次迭代中,我们获取
list\u值[pos+1]
的值,并将其复制到
list\u值[pos+2]
,等等。。最后,整个子数组
list\u value[pos+1:://code>将填充最初存储在
list\u value[pos]
的值。而是从索引最高的元素开始移动元素:

for i in range(element_loaded, pos, -1):
    list_value[i] = list_value[i - 1]

list_value[pos] = extra_num
element_loaded += 1

也不要在循环中插入新值和递增计数器。插入不需要多次进行,增加循环中的计数器会在插入完成后导致无效状态。

“我得到的响应”-是什么?请编辑问题,以包括预期结果和实际结果。看,有!对不起,我忘了,你能不能a)从代码中删除各种输入查询并用函数参数替换它们,或者b)提供重现问题所需的精确输入?查看帮助页面了解详细信息。注意
对于范围内的i(位置,元素加载):list_value[i+1]=list_value[i]
通过覆盖
i+1
位置来保留
i
位置,然后才尝试保留
i+1
位置。mistermiagi我已经这样做了,请注意,我添加了预期的输出。我加载的数字是324,2,5,之后,我想在[0]的位置加上0
for i in range(element_loaded, pos, -1):
    list_value[i] = list_value[i - 1]

list_value[pos] = extra_num
element_loaded += 1