我正在寻找在Python 2.x中执行此任务的最佳方法
我有一个给定大小的数组,其中一些元素必须保持在属性标识的给定位置。
我必须从数组中删除一个元素,并将所有非固定元素移到顶部,并用第一个条目的副本填充缺少的底部条目。
示例
启动数组:
array[0]={property='dynamic', name='A'}
array[1]={property='dynamic', name='B'}
array[2]={property='fixed', name='C'}
array[3]={property='dynamic', name='D'}
array[4]={property='fixed', name='E'}
array[5]={property='dynamic', name='F'}
删除一个项目
array[0]={property='dynamic', name='A'}
array[1]={property='dynamic', name='B'}
array[2]={property='fixed', name='C'}
array[4]={property='fixed', name='E'}
array[5]={property='dynamic', name='F'}
将非固定元素移至顶部
array[0]={property='dynamic', name='A'}
array[1]={property='dynamic', name='B'}
array[2]={property='fixed', name='C'}
array[3]={property='dynamic', name='F'}
array[4]={property='fixed', name='E'}
最终结果用顶部元素填充最后一个缺失的插槽
array[0]={property='dynamic', name='A'}
array[1]={property='dynamic', name='B'}
array[2]={property='fixed', name='C'}
array[3]={property='dynamic', name='F'}
array[4]={property='fixed', name='E'}
array[5]={property='dynamic', name='A'}
最快的方法是什么? (属性,数组大小和元素都是动态的)
答案 0 :(得分:1)
我假设你正在使用python列表
前三行只创建一个包含3个项目的列表。请改用您的列表。
Pop会删除提供的索引处的项目并返回其值 a.append(a [0])获取第一个项目,并将其附加到列表的末尾
>>> a.append(0)
>>> a.append(1)
>>> a.append(2)
>>> a
[0, 1, 2]
>>> p = a.pop(1)
>>> p
1
>>> a
[0, 2]
>>> a.append(a[0])
>>> a
[0, 2, 0]
>>>
在我的示例中,a保存单个值,但它可以包含类似于示例的dict。代码是相同的
答案 1 :(得分:0)
joel goldstick的回答可能是你最好的选择。在某种程度上,您需要移动列表的其余部分以填补空白。这是一个以编程方式执行相同操作的示例:
removeIndex = 6 //index to remove
for i in range(removeIndex+1, len(ary)-1): //from next index to end of array
ary[i-1] = ary[i] //move the item down one
ary[len(ary) - 1] = ary[0]; //duplicate the first in the last position