Таким образом, вот мой код:
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
содержит список целых чисел. Я хочу выдержать сравнение item
кому: z
и распечатайте числа, которые не находятся в z
по сравнению с item
.
Я могу распечатать элементы, которые находятся в z
при сравнении нет item
, но когда я пытаюсь сделать противоположное с помощью кода выше ничего печать.
Какая-либо справка?
Ваш код не делает того, что я думаю, что вы думаете. Строка для элемента в z:
будет проходить через z
, каждый раз делая элемент
равным одному единственному элементу z
. Таким образом, исходный список item
перезаписывается перед тем, как с ним что-либо сделать.
Я думаю, что вы хотите что-то подобное:
item = [0,1,2,3,4,5,6,7,8,9]
for element in item:
if element not in z:
print element
но вы легко можете сделать это как:
[x for x in item if x not in z]
или (если вы не возражаете против потери дубликатов неуникальных элементов):
set(item) - set(z)
>> items = [1,2,3,4]
>> Z = [3,4,5,6]
>> print list(set(items)-set(Z))
[1, 2]
Если вы запустите петлю, принимая предметы из Z, как вы ожидаете, что они не будут в Z? ИМХО, это будет иметь больше смысла сравнивать предметы из другого списка к z.
>>> item = set([0,1,2,3,4,5,6,7,8,9])
>>> z = set([2,3,4])
>>> print item - z
set([0, 1, 5, 6, 7, 8, 9])
Вы переназначиваете элемент к значениям в Z, так как вы повторяете Z. Итак, первый раз в вашей цикле, элемент = 0, следующий элемент = 1 и т. Д. Вы никогда не проверяете один список против другого.
сделать это очень явно:
>>> item = [0,1,2,3,4,5,6,7,8,9]
>>> z = [0,1,2,3,4,5,6,7]
>>>
>>> for elem in item:
... if elem not in z:
... print elem
...
8
9
Нет, z не определен. содержит список целых чисел.
Я думаю, что вы пытаетесь сделать следующее:
#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
Как было сказано в других ответах, вы можете попробовать использовать наборы.
-121--982931-Вы ищете документы для 1.8. Строка # каждая удалена в 1.9. Вместо этого используйте each_line.
-121--1649036-Ваш код - no-op. По определению цикла, "item" должен быть в Z. A "For... in "loop in Python означает" Loop, хотя список называется 'z', каждый раз, когда вы закольцовываете, дайте мне следующий предмет в списке, и назовите его 'item' "
http://docs.python.org/tutorial/controlflow.html#for-statements
Я думаю, что ваша путаница возникает из-за того, что вы используете имя переменной" предмет "дважды, чтобы означать две разные вещи.
Нет, z неопределен. Товар содержит список целых чисел.
Я думаю, что вы пытаетесь сделать это:
#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
Как было указано в других ответах, вы можете попробовать использовать наборы.
list1 = [1,2,3,4]; list2 = [0,3,3,6]
print set(list2) - set(list1)