如何简化嵌套坐标列表中各组x、y值均值计算的for循环代码
代码优化方案
原有写法针对每个簇单独定义变量、重复编写循环逻辑,不仅冗余,也无法适配簇数量变化的场景。我们可以通过嵌套遍历直接完成所有簇的均值计算,无需单独定义多个存储列表。
写法1:易理解的基础嵌套循环
该写法逻辑清晰,新手也能快速看懂,每个簇仅需遍历1次,效率远高于原代码:
cluster_list = [[(1,2),(3,4)],[(5,6),(7,8)]] # 遍历每个簇计算坐标均值 for cluster in cluster_list: sum_x = 0 sum_y = 0 point_count = len(cluster) # 一次遍历同时累加x、y坐标值 for x, y in cluster: sum_x += x sum_y += y mean_x = sum_x / point_count mean_y = sum_y / point_count print(mean_x, mean_y)
写法2:更简洁的内置函数实现
借助Python内置的sum函数,代码可以进一步精简,运行逻辑和写法1完全一致:
cluster_list = [[(1,2),(3,4)],[(5,6),(7,8)]] for cluster in cluster_list: point_count = len(cluster) mean_x = sum(point[0] for point in cluster) / point_count mean_y = sum(point[1] for point in cluster) / point_count print(mean_x, mean_y)
两种写法的运行结果和原代码完全相同:
2.0 3.0
6.0 7.0
内容的提问来源于stack exchange,提问作者python_beginner
相关产品推荐
相关产品推荐

