Python如何对嵌套列表内的元素组独立计算并返回多组过滤子列表
解决方案
你当前代码的核心问题是遍历顺序错误,且所有符合条件的元素都追加到了同一个一维列表中,没有为find的每组元素生成独立的子结果列表。调整遍历逻辑,先遍历find的每个元素组,为每组单独创建子列表存储匹配结果即可。
修改后的可运行代码如下:
def search_test(): find = [('1', '2'), ('3', '4')] abc = [1,6,15] result = [] # 优先遍历find的每个元素组 for item_group in find: # 计算当前组的乘积 current_product = float(item_group[0]) * float(item_group[1]) sub_result = [] # 遍历abc筛选符合条件的元素加入当前组的子列表 for num in abc: if current_product <= num: sub_result.append(num) result.append(sub_result) return result print(search_test())
运行后输出为[[6, 15], [15]],完全匹配预期结果。
如果需要更简洁的写法,也可以用嵌套列表推导式实现:
def search_test(): find = [('1', '2'), ('3', '4')] abc = [1,6,15] return [[n for n in abc if float(g[0])*float(g[1]) <= n] for g in find]
内容的提问来源于stack exchange,提问作者Peanut Jams
相关产品推荐
相关产品推荐

