# Removing specific tuples from List - Python

TAGS :
Viewed: 6 - Published at: a few seconds ago

#### [ Removing specific tuples from List ]

I've got a list

``````a = [(1,2),(1,4),(2,6),(1,8),(3,6),(1,10),(1,6)]
``````

If I say that:

``````for x in a:
if x==1:
print x
``````

I get the expected result : (1,2) (1,4) (1,8) (1,10) (1,6)

However I want to remove all the occurrences of all the tuples in the format (1,x),So

``````for x in a:
if x==1:
a.remove(x)
``````

I thought that all the occurences should be removed.However when i say

``````Print a
``````

I get [(1,4),(2,6),(3,6),(1,6)]

Not all the tuples were removed. How do I do it.?? Thanks

I'd use list comprehension:

``````def removeTuplesWithOne(lst):
return [x for x in lst if x != 1]

a = removeTuplesWithOne([(1,2),(1,4),(2,6),(1,8),(3,6),(1,10),(1,6)])
``````

For me it's more pythonic than built-in `filter` function.

P.S. This function does not change your original list, it creates new one. If your original list is huge, i'd probably use generator expression like so:

``````def removeTuplesWithOne(lst):
return (x for x in lst if x != 1)
``````

This isn't the same approach as yours but should work

``````a = filter(lambda x: x != 1, a)
``````

You can use list comprehension like this, to filter out the items which have `1` as the first element.

``````>>> original = [(1, 2), (1, 4), (2, 6), (1, 8), (3, 6), (1, 10), (1, 6)]
>>> [item for item in original if item != 1]
[(2, 6), (3, 6)]
``````

This creates a new list, rather than modifying the existing one. 99% of the time, this will be fine, but if you need to modify the original list, you can do that by assigning back:

``````original[:] = [item for item in original if item != 1]
``````

Here we use slice assignment, which works by replacing every item from the start to the end of the original list (the `[:]`) with the items from the list comprehension. If you just used normal assignment, you would just change what the name `original` pointed to, not actually modify the list itself.

``````a = [(1,2),(1,4),(2,6),(1,8),(3,6),(1,10),(1,6)]