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