Remove element in list using list comprehension -

2019-03-29 05:32发布

问题:

I have a list like this:

['A','B','C']

What I need is to remove one element based on the input I got in the function. For example, if I decide to remove A it should return:

['B','C']

I tried with no success

list = ['A','B','C']
[var for var in list if list[var] != 'A']

How can I do it? Thanks

回答1:

Simple lst.remove('A') will work:

>>> lst = ['A','B','C']
>>> lst.remove('A')
['B', 'C']

However, one call to .remove only removes the first occurrence of 'A' in a list. To remove all 'A' values you can use a loop:

for x in range(lst.count('A')):
    lst.remove('A')

If you insist on using list comprehension you can use

>>> [x for x in lst if x != 'A']
['B', 'C']

The above will remove all elements equal to 'A'.



回答2:

The improvement to your code (which is almost correct) would be:

list = ['A','B','C']
[var for var in list if var != 'A']

However, @frostnational's approach is better for single values.

If you are going to have a list of values to disallow, you can do that as:

list = ['A','B','C', 'D']
not_allowed = ['A', 'B']
[var for var in list if var not in not_allowed]


回答3:

You can just use the remove method of list. Just do list.remove('A') and it will be removed.

If you have the index of the item to be removed, use the pop method. list.pop(0).



回答4:

If you not sure whether the element exists or not, you might want to check before you delete:

if 'A' in lst:
    lst.remove('A')


回答5:

Find this simplified code:

list1 = [12,24,35,24,88,120,155]

while 24 in list1:

    list1.remove(24)

print(list1)

Best Luck!