我继承了要重写为OOP程序的python程序(更像是大量脚本)。我仍在学习Python,并遇到了我不确定的这一行代码。

不幸的是,我不知道该操作叫什么,所以我的搜索不是很成功。

bands = [int(b) for b in bands] if bands is not None else [10, 11]

我认为这段代码着眼于“ bands”变量,如果不是“ None”,则循环遍历该变量并将列表中的每个条目强制转换为int。如果“ bands”为空,则将“ bands”设置为等于包含10和11的列表。

我对代码的分析正确吗?

但是,代码对我来说看起来很陌生,有点倒退。有人想要以这种方式而不是正常的if语句来编写代码是否有特定原因?是更快还是有其他好处?

最佳答案

它是。

左侧有一个list comprehension。你是正确的。它使用可迭代的bands创建一个新列表,其中每个元素是intbands的每个元素返回的值。

但是,如果bandsNone,则将引发异常。因此,仅在bands is not None时才进行评估。如果bandsNone,则它将使用[10, 11]作为默认值。

了解所有理解(列表,字典,集合和生成器)。它们超级有用。

关于python - 我对此代码的分析是否正确,为什么要用这种方式编写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56705702/

10-11 06:16