删除数组项并更新数组索引

时间:2012-03-29 00:25:09

标签: python

如何以一种将数组索引保存在增量列表中的方式从数组中删除数组项?

基本上我想这样做:

修改以下数组,以便生成下一个数组

#before
arrayName[0] = "asdf random text"
arrayName[1] = "more randomasdf"
arrayName[2] = "this is the array item i am about to remove"
arrayName[3] = "another asdfds"
arrayName[4] = "and som easdf"

#after
arrayName[0] = "asdf random text"
arrayName[1] = "more randomasdf"
arrayName[2] = "another asdfds"
arrayName[3] = "and som easdf"

注意#before数组中的arrayName [2]如何在#after数组中消失并且索引已经重新排序,以便#before数组中的arrayName [3]现在是arrayName [2]。

我想删除数组项并重新排序数组索引。

我怎样才能有效地做到这一点?

4 个答案:

答案 0 :(得分:5)

如果通过“数组”实际上表示“列表”,则只需使用del

即可
del arrayName[2]

答案 1 :(得分:1)

>>> a = ["asdf random text", "more randomasdf", "this is the array item i am about to remove", "another asdfds", "and som easdf",]
>>> a
['asdf random text', 'more randomasdf', 'this is the array item i am about to remove', 'another asdfds', 'and som easdf']
>>> a.pop(2)
'this is the array item i am about to remove'
>>> a
['asdf random text', 'more randomasdf', 'another asdfds', 'and som easdf']

答案 2 :(得分:0)

只需使用 del 命令

即可
del(arrayName[2])

python会自动为你重新订购

答案 3 :(得分:0)

假设数组是python列表,您可以尝试del arrayName[2]arrayName.pop(2)。每个删除的复杂性是O(N),N是列表的长度。

如果arrayName的长度或要删除的索引数量非常大,您可以试试这个。

indexestodelete = set(2,.....)
arrayName[:] = [arrayName[index] for index not in indexestodelete ]