Синтаксическая ошибка при попытке понимания списка в Python - PullRequest
0 голосов
/ 28 февраля 2019

Я получаю синтаксическую ошибку при попытке изменить следующий код на Список понимания

Исходный код:

new_num =[]
for num in a:
    if num in b:
       if num not in new_num:
          new_num.append(num)
print(new_num)

Изменить на понимание списка:

new_num = [num for num in a if num in b if num not in new_num]
print(new_num)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Ваш код: new_num = [num for num in a if num in b if num not in new_num] не работает по двум причинам:

  • Вы можете иметь только оператор if.Вы должны объединить с логическим оператором: if num in b and num not in new_num.
  • Вы не можете использовать new_num в пределах понимания списка, поскольку вы еще не определили его, как результат создаваемого вами понимания списка.Даже если вы исправите это, как в предыдущем пункте, это вызовет NameError NameError: name 'new_num2' is not defined.

Если вы хотите использовать понимание списка, вы можете использовать set () .

new_num2 = list(set([num for num in a if num in b]))
print(new_num2)

Понимание списка собирает все элементы a, которые находятся в b.set удаляет дубликаты.list преобразует его обратно в список.

0 голосов
/ 28 февраля 2019

I Предположим, вы хотите извлечь уникальные элементы из 'a'.Если это то, что вы пытаетесь сделать, то код ниже делает это.

a = [12,4,5,6,7,3,4,12,5,7]
unique_numbers = set(a)
print(unique_numbers)

Вывод

set([3, 4, 5, 6, 7, 12])
...