为什么我们需要检查value是否等于None?

时间:2018-11-25 01:04:11

标签: python

values = [-50, -80, -100]
max_value = None
for i in values:
    if max_value is None or i > max_value:
        max_value = i

为什么我们需要包含此代码max_value is None 假设我们经历了for循环 循环1:i = -50。我们不能用无来评估-50,对吧?

2 个答案:

答案 0 :(得分:1)

由于您无法将# Extract columns v = df.filter(like='A') # Convert blanks to NaNs so we can call Series.dropna later. df['NC'] = v[v.astype(bool)].agg(lambda x: '_'.join(x.dropna()), axis=1) # Or, # df['NC'] = v[v.astype(bool)].agg( # lambda x: x.dropna().str.cat(sep='_'), axis=1) print(df) key A1 A2 A3 BX CX DX NC 0 1 X1 Y1 B1 C1 D1 X1_Y1 1 2 X2 Z2 B2 C2 D2 X2_Z2 2 3 X3 B3 C3 D3 X3 3 4 X4 B4 C4 D4 X4 4 5 B5 C5 D5 int进行比较,因此得出NoneType

TypeError

因此,删除条件将导致您的代码中断。但是,最好设置一个最小的起始值,例如-50 > None # TypeError: '>' not supported between instances of 'int' and 'NoneType'

-inf

当然,对于微不足道的计算,您可以使用内置的values = [-50, -80, -100] max_value = -float('inf') for i in values: if i > max_value: max_value = i

max

答案 1 :(得分:1)

最惯用的方法是假设values[0]为最大值,并从第一个索引开始迭代:

values = [-50, -80, -100]
max_value = values[0]
for i in values[1:]:
    if i > max_value:
        max_value = i 

您可以摆脱None支票。