python - 在内联 if/else 语句中分配多个值
问题描述
我正在尝试编写一个内联 if/else 语句,该语句根据单个条件分配两个值。大意是:
x = y = 0
value = 11
threshold = 5
x, y = x+1, 0 if value <= threshold else x, y = x-1, value
我希望这段代码会导致x = -1
and y = 11
。当我运行这个时,我得到这个错误:SyntaxError: cannot assign to literal
。我玩弄括号,但什么也做不了。
有没有办法做到这一点?我可以解决这个问题,但这会特别方便。
解决方案
x, y =
您需要括号,并且不需要后面的额外else
内容:
>>> x = y = 0
>>> value = 11
>>> threshold = 5
>>>
>>> x, y = (x+1, 0) if value <= threshold else (x-1, value)
>>> x
-1
>>> y
11
请注意,如果没有括号,右侧有一个 3 元组:
>>> x,y = x-1, value if value <= threshold else x+1, 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
它被解析为:
x+1
, 0 if value <= threshold else x-1
,value
推荐阅读
- amazon-web-services - AWS Greengrass 是否支持边缘功能的 Go 运行时?
- python - 打开逗号分隔的文本并读取具有特定 id 的特定字段数据项的文件,它可以在数据框中使用
- flutter - 如何在颤动的 SliverAppBar 的灵活空间内满足溢出?
- javascript - 仅在特定时间调用的点击事件
- c# - LINQ 方法将值作为单个对象返回,包括嵌套数组
- python - 如何从 aws lambda 内存中的 azure 存储中读取大型 gzip csv 文件?
- c# - 达到图的限制
- javascript - 如何从javascript中的两个iso日期格式获取日差?
- mongodb - 在本地网络上为每个 ip 获取不同的 MongoDB 实例
- reactjs - 如何在反应中找到嵌套数组对象列表的长度?