Python如何将列表推导式改写为等效的普通for循环代码
问题原因
你编写的循环逻辑和原列表推导式不等效,问题出在元素追加环节:原列表推导式每次将(p, e)组成的元组作为单个元素存入列表,而你的代码是将p、e作为两个独立的元素依次追加,最终自然会得到扁平化的一维列表。
另外注意你循环中使用的predicted、expected要和实际传入的变量名匹配,如果你实际定义的变量是原代码里的pred、exp,要对应修改避免变量不存在报错。
修正后的代码
correct = [] # 若你实际使用的变量名是predicted、expected,把zip里的参数换成对应变量即可 for (p, e) in zip(pred, exp): if p != e: # 直接追加p、e组成的元组,和列表推导式逻辑完全一致 correct.append( (p, e) ) print(correct)
内容的提问来源于stack exchange,提问作者BarkingAxe
相关产品推荐
相关产品推荐

