社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

一行python循环中的If和else

inverted_index • 5 年前 • 1497 次点击  

很抱歉这么简单;我在别处找过,但没有人指出这个具体问题。我想学习python的方式,使我的代码紧凑!因此,为此,我尝试使用一行(即短)循环,而不是多行循环,特别是for循环。当我试图在单行循环中使用一行if和else时,问题就出现了。只是好像没用。例如,请考虑以下内容:

numbers = ... # an arbitrary array of integer numbers

over_30 = [number if number > 30 for number in numbers]

这是有问题的,因为 one-line if 确实需要 else 跟着它。即使,当我加上 其他的 到上面的脚本(之后 if ): over_30 = [number if number > 30 else continue for number in numbers] ,它变成了另一个蟒蛇般的错误。

我知道问题实际上是一行if和else,因为python需要标识一个应该分配给lefthand操作符的值。但是,对于上述模式的特定用例是否有解决方法?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55925
 
1497 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Vicrobot
Reply   •   1 楼
Vicrobot    5 年前

continue 因为这是三元表达式,需要返回某些内容,所以不起作用。

val1 if condition else val2

over_30 = [number for number in numbers if number > 30]
Selcuk
Reply   •   2 楼
Selcuk    5 年前

它们是不同的语法。你要找的是:

over_30 = [number for number in numbers if number > 30]

这是一个条件列表理解。这个 else 子句实际上是一个无条件列表理解,与三元表达式结合在一起:

over_30 = [number if number > 30 else 0 for number in numbers]

你在这里计算三元表达式( number if number > 30 else 0 number numbers 可接受的。