咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

最近需要从excel中组合大量的数据,如需求:

试试用Python来处理数据:

整体思路:读取excel文件,将待处理的单元格读取成一个列表,再进行组合,写入组合完成的数据。

脚本核心:reduce() 函数

该函数先从列表中取出2个元素执行指定函数,并将输出结果与第3个元素传入函数,输出结果再与第4个元素传入函数,…,以此类推,直到列表每个元素都取完

按以上思路:

1、先从excel中单元格取数据生成列表:

list1=[我想,我想去]

list2=[吃]

list3=[火锅,鱼]

2、用reduce函数处理数据:

先将3个列表合成一个嵌套列表

idealist = [[我想,我想去],[吃],[火锅,鱼]]

看这里:reduce函数会先选取列表中前两个元素:“[我想,我想去],[吃]” 进行指定的处理

这里用循环处理组合两个列表:

str(i) + str(j) for i in list1 for j in list2

什么意思呢?大概两个列表循环元素组合,即:

现在两个列表组合成了这样:

[我想吃,我想去吃]


而此时的idealist从三个元素变成了两个元素(前两个元素组合在一起了):

[[我想吃,我想去吃],[火锅,鱼]]

重点来了:reduce此时会继续按照上面写的列表循环处理这个新列表:

继续以上步骤:

现在idealist就变成了:[[我想吃火锅,我想吃鱼,我想去吃火锅,我想去吃鱼]]

OK~

到此为止idealist已经处理完成,只剩下一个元素了,不会再继续执行,最终结果

idealist = [[我想吃火锅,我想吃鱼,我想去吃火锅,我想去吃鱼]]

把这个结果写入文档就行了,如何写下次再说吧~

整体脚本,对了,是Python3

from functools import reduce list1=["我想","我想去"] list2=["吃"] list3=["火锅","鱼"] idealist = [list1,list2,list3] makeup = lambda x: reduce(lambda x, y: [str(i) + str(j) for i in x for j in y], x) idea = makeup(idealist) print(idea)