Kon*_*tin 0 python list-comprehension
有以下简单的脚本:
def MyFunction(digit):
if digit < 4:
return digit
else:
return None
A = [1, 2, 3, 4, 5]
B = [MyFunction(x) for x in A]
print(B) # [1, 2, 3, None, None]
Run Code Online (Sandbox Code Playgroud)
题:
是否有可能以MyFunction()某种方式重写,所以B变得等于[1, 2, 3]没有None?请不要建议我if在列表理解中使用表达式,在列表理解之后处理B等.
是否有可能以某种方式重写MyFunction(),所以B变为等于[1,2,3]而没有None?请不要建议我使用列表理解中的表达式,列表理解后的进程B等
不,不是.列表推导不会改变列表的长度.你无法MyFunction()改变这一点.您必须if在列表推导中使用a 或在列表上进行某种预处理或后处理.
理解包括单个表达式,后跟至少一个for子句和零个或多个for或if子句.在这种情况下,新容器的元素是通过将每个for或if子句从左到右嵌套,并且每次到达最内部块时评估表达式以产生元素而生成的元素.
每次for迭代都会得到一个元素.这是内置于语言中的.
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |