Нахождение элементов не в списке

Таким образом, вот мой код:

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, но когда я пытаюсь сделать противоположное с помощью кода выше ничего печать.

Какая-либо справка?

61
задан guival 22 March 2019 в 12:41
поделиться

8 ответов

Ваш код не делает того, что я думаю, что вы думаете. Строка для элемента в 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)
148
ответ дан 24 November 2019 в 16:55
поделиться
>> items = [1,2,3,4]
>> Z = [3,4,5,6]

>> print list(set(items)-set(Z))
[1, 2]
52
ответ дан 24 November 2019 в 16:55
поделиться

Если вы запустите петлю, принимая предметы из Z, как вы ожидаете, что они не будут в Z? ИМХО, это будет иметь больше смысла сравнивать предметы из другого списка к z.

3
ответ дан 24 November 2019 в 16:55
поделиться
>>> 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])
2
ответ дан 24 November 2019 в 16:55
поделиться

Вы переназначиваете элемент к значениям в 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
0
ответ дан 24 November 2019 в 16:55
поделиться

Нет, 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

Я думаю, что ваша путаница возникает из-за того, что вы используете имя переменной" предмет "дважды, чтобы означать две разные вещи.

2
ответ дан 24 November 2019 в 16:55
поделиться

Нет, 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

Как было указано в других ответах, вы можете попробовать использовать наборы.

3
ответ дан 24 November 2019 в 16:55
поделиться
list1 = [1,2,3,4]; list2 = [0,3,3,6]

print set(list2) - set(list1)
9
ответ дан 24 November 2019 в 16:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: