我喜欢将带有mulitple for和if、elif的列表附加代码转换为列表理解。 我试过了,但只有临时名单有效。 临时列表2工作不正常
原始代码
temp_list = []
temp_array = accd['ACCD_SEQ'].values
temp_list = [i for i in temp_array if len(accd[accd['ACCD_DTL'].str.contains(i)]) != 0]
temp_list2 = []
for i in temp_list:
if len(accd[accd['ACCD_DTL'].str.contains(i)]) == 1:
temp_list2.append(i)
elif len(accd[accd['ACCD_DTL'].str.contains(i)]) > 1:
for j in range(len(accd[accd['ACCD_DTL'].str.contains(i)])):
temp_list2.append(i)
else:
pass
我的审判
temp_list2 = [i if len(accd[accd['ACCD_DTL'].str.contains(i)]) == 1 else i for j in range (len(accd[accd['ACCD_DTL'].str.contains(i)])) if len(accd[accd['ACCD_DTL'].str.contains(i)]) > 1 for i in temp_list
此代码表示“UnboundLocalError:赋值前引用的局部变量'i'”
有人能帮忙修理吗
让我们考虑以下函数^ {CD1>},它通过“大于{{CD2>}:
的每行中的值之和”来“平坦化”数值二维列表。例如,如果
lst
是:产出将是:
该函数有两个嵌套的
for
循环,其索引分别为i
和j
以遍历lst
行和列。在检查每一行中的值之前,我们需要定义一个变量,在本例中为sum_
,以将总和保持为第i行中的jth值。条件if lst[i][j] > 1:
阻止任何小于2
的数字被添加到sum_
。最后,当第行中的所有值都已处理完毕时,结果总和将被追加到“展平”列表(new_list
)。有了这些,让我们把所有这些信息分解,从函数定义到列表理解第一步。循环行:
第二步。循环的列:
第三步。条件为求和,返回大于1的值,否则返回0:
第四步。求和:添加
[arr[i][j] if arr[i][j] > 1 else 0 for j in range(len(arr[i]))]
中的所有值第五步。将总和追加到
new_lst
:我希望这能回答你的问题
相关问题 更多 >
编程相关推荐