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

在Python中尝试列表理解时出现语法错误,python,list-comprehension,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) I假设您想从“a”中提取唯一的

尝试将以下代码更改为列表时,我遇到语法错误

初始代码:

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)

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])

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])

您的代码:
new\u num=[a if num in b if num not in new\u num中的num for num]
不起作用,原因有两个:

  • 只能使用if语句。您应该将与逻辑运算符结合使用:
    如果num在b中,num不在new_num中
  • 您不能在列表压缩中使用
    new_num
    ,因为您尚未定义它,这是您正在创建的列表理解的结果。即使您像上一个项目符号中那样更正它,它也会引发一个NameError
    NameError:name'new\u num2'未定义
如果你想使用列表理解,你可以使用


列表理解收集
a
b
中的所有元素<代码>设置删除重复项<代码>列表将其转换回列表。

您的代码:
new\u num=[a中的num为num,if num为num,b中的num为num,if num为num,if num为num,if num不在new\u num]
不起作用,原因有二:

  • 只能使用if语句。您应该将与逻辑运算符结合使用:
    如果num在b中,num不在new_num中
  • 您不能在列表压缩中使用
    new_num
    ,因为您尚未定义它,这是您正在创建的列表理解的结果。即使您像上一个项目符号中那样更正它,它也会引发一个NameError
    NameError:name'new\u num2'未定义
如果你想使用列表理解,你可以使用


列表理解收集
a
b
中的所有元素<代码>设置删除重复项<代码>列表将其转换回列表。

您只能有一个筛选条件,请尝试
。。。如果num在b中
并且
num不在new中_num]
您使用的是什么版本的Python?我使用的是3.6.3,您的代码在我的机器上执行得很好。您不能在列表中引用正在创建的列表<直到列表理解完成后,才会设置“代码>新数值”。如果要消除重复项,请将其设置为“设置<代码>集而不是<代码>列表”。您只能有一个筛选条件,请尝试<代码>。。。如果num在b中
并且
num不在new中_num]
您使用的是什么版本的Python?我使用的是3.6.3,您的代码在我的机器上执行得很好。您不能在列表中引用正在创建的列表<代码>新编号在列表理解完成后才会设置。如果要消除重复项,请将其设置为
集合
,而不是
列表
。是。非常感谢。我刚刚了解了布景。。。这对我很有用……是的。非常感谢。我刚刚了解了布景。。。这对我来说很有用。。