《python编程从入门到实践》示例16.2.6代码块分析

本文代码贴出代码都是python3

代码块正文

import pygal
from itertools import groupby

def draw_line(x_data,y_data,title,y_legend):
    xy_map = []
    for x,y in groupby(sorted(zip(x_data,y_data)),key=lambda _: _[0]):
        y_list  = [v for _, v in y]
        xy_map.append([x, sum(y_list)/ len(y_list)])
    x_unique,y_mean = [*zip(*xy_map)]
    line_chart = pygal.Line()
    line_chart.title= title
    line_chart.x_labels=x_unique
    line_chart.add(y_legend,y_mean)
    line_chart.render_to_file(title+'.svg')
    return line_chart

分析

本文只对其中的代码块部分进行分析,由于是部分代码,就不对整体设计思路进行阐释,详情见书(太简单了 自己看)。
主要对此部分代码进行阐释。

for x,y in groupby(sorted(zip(x_data,y_data)),key=lambda _: _[0]):
	y_list  = [v for _, v in y]

zip函数理解

这里放出我探究代码

x_data = [1,1,1,1,1,2,2,2,2,2]
y_data = [1,2,

你可能感兴趣的:(python,zip,lambda)