网上下载了一个 Python2 脚本,其中有一句非常 pythonic ,本人水平理解不能
想请教下大家这段代码要如何修改才能在 Python3 中运行。
def avhash(img):
if not isinstance(img, Image.Image):
img = Image.open(img)
img = img.resize((8, 8), Image.ANTIALIAS).convert('L') #将 image 压缩为 8*8,转化为灰度图
avg = reduce(lambda x, y: x + y, img.getdata()) / 64. #对每个像素点的灰度累和,最后除以 64,得到灰度的平均值
return reduce(lambda x,(y,z): x | (z << y), enumerate(map(lambda i: 0 if i < avg else 1, img.getdata())), 0)
就是这句
reduce(lambda x,(y,z): x | (z << y), enumerate(map(lambda i: 0 if i < avg else 1, img.getdata())), 0)
目前直接运行会报错,错误信息如下
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.