我继承了要重写为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
创建一个新列表,其中每个元素是int
为bands
的每个元素返回的值。
但是,如果bands
是None
,则将引发异常。因此,仅在bands is not None
时才进行评估。如果bands
是None
,则它将使用[10, 11]
作为默认值。
了解所有理解(列表,字典,集合和生成器)。它们超级有用。
关于python - 我对此代码的分析是否正确,为什么要用这种方式编写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56705702/