尝试在Python中执行列表理解时出现语法错误

时间:2019-02-28 17:56:37

标签: python list-comprehension

尝试将以下代码更改为“列表理解”时出现语法错误

初始代码:

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 :(得分:0)

假设,您要从“ 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])

答案 1 :(得分:0)

您的代码: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)

列表推导收集ab的所有元素。 set删除重复项。 list将其转换回列表。