Why flatten?
方便遍历/map/reduce操作,其实就是降维。
层级列表因何产生?
写爬虫多的朋友经常会用到批处理的方式做大量的数据请求,返回的批次数据就保存在了一个list,而全部数据通常采用写入文件/数据库,或存在内存的方式;后者就不可避免地做大量append操作。其次对接口结果多样,甚至可能达到多层嵌套的情况;
二级嵌套
二级嵌套是最常见的。处理办法也有很多:
import functools
import itertools
import numpy
import operator
import perfplot
def forfor(a):
return [item for sublist in a for item in sublist]
def sum_brackets(a):
return sum(a, [])
def functools_reduce(a):
return functools.reduce(operator.concat, a)
def itertools_chain(a):
return list(itertools.chain.from_iterable(a))
def numpy_flat(a):
return list(numpy.array(a).flat)
def numpy_concatenate(a):
return list(numpy.concatenate(a))
perfplot.show(
setup=lambda n: [list(range(10))] * n,</