Python列表操作报错:'list'对象不可调用及预期输出实现
问题解决:列表操作报错及修正
错误原因
你代码里的A=Ci[1]([x for x in J if x not in J1])这行是错误的——Ci[1]是一个列表[10, 30, 50, 80],你试图把它当作函数来调用,这就触发了TypeError: 'list' object is not callable。
修正方案
你的需求是:从J中移除J1的元素,保留Ci[1]中对应未被移除元素的项,然后将原Ci和这个新生成的子列表组合成最终结果。以下是实现代码:
J = [2, 6, 9, 10] J1 = [6, 10] Ci = [[0, 0, 0, 0], [10, 30, 50, 80]] # 找出J中不在J1里的元素的索引 keep_indices = [idx for idx, val in enumerate(J) if val not in J1] # 根据索引从Ci[1]中提取对应元素 filtered_ci = [Ci[1][idx] for idx in keep_indices] # 组合原Ci和过滤后的子列表,得到预期输出 result = [Ci, [filtered_ci]] print(result)
代码解释
keep_indices:通过enumerate遍历J,记录那些不在J1中的元素的索引(这里是0和2,对应J里的2和9)filtered_ci:根据上面的索引,从Ci[1]中取出对应位置的元素——Ci[1][0]是10,Ci[1][2]是50,所以得到[10,50]result:把原Ci和包装成列表的filtered_ci组合,就得到了预期的[[[0, 0, 0, 0], [10, 30, 50, 80]],[[10, 50]]]
内容的提问来源于stack exchange,提问作者isaacmodi123
相关产品推荐
相关产品推荐

