删除列表中的元素并在Python中保留列表的大小?

时间:2014-01-24 08:03:44

标签: python python-2.7

假设我有一个列表A = [None, None, None, None, None, None, 1, 2, 3, 4]。截至目前,列表的大小为10.现在,我想删除一个特定元素1,但同时我希望1替换为None和大小列表的保留。删除1不应将列表大小更改为9。

2 个答案:

答案 0 :(得分:2)

如果您只想删除第一个元素,可以执行此操作

A[A.index(1)] = None

但是,如果你想替换列表中的所有1,你可以使用这个列表理解

A = [None if item == 1 else item for item in A]

如果您想进行现场更换,可以这样做(感谢@Jonas)

A[:] = [None if item == 1 else item for item in A]

您可以编写通用函数,例如

A, B = [None,None, None, None, None, None, 1, 1, 3, 4], [1, 1, 1]

def replace(input_list, element, replacement):
    try:
        input_list[input_list.index(element)] = None
    except ValueError, e:
        pass
    return input_list

def replace_all(input_list, element, replacement):
    input_list[:] = [replacement if item == element else item for item in input_list]
    return input_list

print replace(A, 1, None)
print replace_all(B, 1, None)

<强>输出

[None, None, None, None, None, None, None, 1, 3, 4]
[None, None, None]

答案 1 :(得分:1)

如果您只知道该值,则会替换第一个事件:

A[A.index(1)] = None

如果您知道索引:

A[6] = None