Alex Rivera | Logout

Finding elements not in a list

Asked 2010-01-20T19:35:13.440
99

So heres my code:

item = [0,1,2,3,4,5,6,7,8,9]
z = []  # list of integers

for item in z:
    if item not in z:
        print item

z contains a list of integers. I want to compare item to z and print out the numbers that are not in z when compared to item.

I can print the elements that are in z when compared not item, but when I try and do the opposite using the code above nothing prints.

Any help?

Edit
Report

2 Answers

222

Your code is not doing what I think you think it is doing. The line for item in z: will iterate through z, each time making item equal to one single element of z. The original item list is therefore overwritten before you've done anything with it.

I think you want something like this:

item = [0,1,2,3,4,5,6,7,8,9]

for element in item:
    if element not in z:
        print(element)

But you could easily do this like:

[x for x in item if x not in z]

or (if you don't mind losing duplicates of non-unique elements):

set(item) - set(z)
answered 2010-01-20T19:40:49.073
4

No, z is undefined. item contains a list of integers.

I think what you're trying to do is this:

#z defined elsewhere
item = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for i in item:
  if i not in z: print i

As has been stated in other answers, you may want to try using sets.

answered 2010-01-20T19:41:07.720

Your Answer