如何在Python列表推导式中使用赋值运算符?生成随机整数列表报错求解
可以用列表推导式实现随机整数列表
当然可以,你的代码报错是因为写法不符合列表推导式的语法规则。
直接生成的最简写法
如果只是要生成包含5个1-10之间随机整数的列表,根本不需要额外给num赋值,直接把random.randint(1,10)作为列表推导式的表达式即可:
import random numbers = [random.randint(1,10) for _ in range(1,6)]
这里用_是因为我们只需要循环5次(range(1,6)会生成5个元素),不需要用到循环变量本身。
列表推导式里正确使用赋值运算符
如果确实需要在推导式里先给变量赋值再使用(比如要复用这个值做判断或计算),可以用Python 3.8+支持的海象运算符:=:
比如要生成大于5的随机整数列表,同时把每个随机数存到num里:
import random numbers = [num for _ in range(1,6) if (num := random.randint(1,10)) > 5]
海象运算符允许在表达式内部完成赋值,并且这个赋值的变量可以在当前推导式的上下文中使用。
原代码的错误原因
你之前的写法[num for num in range(1,6) num = random.randint(1,10)]违反了列表推导式的语法结构——列表推导式的格式是[表达式 for 变量 in 可迭代对象 [if 条件]],在for循环后面不能直接跟赋值语句,这就是报错invalid syntax的原因。
内容的提问来源于stack exchange,提问作者user17490831
相关产品推荐
相关产品推荐

