如何用Python对嵌套列表各位置元素求平均并生成指定格式列表?
Pythonic 实现嵌套列表按位置求平均值
核心实现代码
针对需求,可借助Python内置的zip(*)转置嵌套列表,结合列表推导式快速完成:
alist = [[1,2],[4,1],[3,2]] # 转置列表,将同位置元素归为一组 transposed_cols = zip(*alist) # 生成目标格式的结果列表 result = [ (f'item{i+1}', sum(column)/len(column)) for i, column in enumerate(transposed_cols) ] print(result) # 输出:[('item1', 2.6666666666666665), ('item2', 1.6666666666666667)]
关键逻辑说明
zip(*alist):这是Python中转置嵌套序列的经典操作,它会把原列表中每个子列表的第n个元素提取出来组成新元组,实现按位置分组。- 列表推导式:遍历转置后的每一组元素,用
enumerate获取位置索引来生成item1、item2这类命名,再通过sum(column)/len(column)直接计算该位置的平均值。
健壮性优化(可选)
如果需要处理空列表、子列表为空这类边界情况,可封装成函数:
def get_position_averages(alist): # 处理空输入场景 if not alist or not alist[0]: return [] transposed_cols = zip(*alist) return [ (f'item{i+1}', sum(col)/len(col)) for i, col in enumerate(transposed_cols) ]
内容的提问来源于stack exchange,提问作者micheal cay
相关产品推荐
相关产品推荐

