我正在制作一个包含非常大的二维数据列表的条形图。我用以下内容对所有条形图进行了硬编码:
bottom=[sum(item) for item in zip(topList[1], topList[2], topList[3], ...)]
并且效果很好。然后我想到,我可以使用子列表来代替吗?这样我就可以迭代地创建条形图,提高可读性并节省(视觉)空间。
但是下面的代码不起作用:
bottom=[sum(item) for item in zip(topList[1:])]
我收到了切片不可散列的错误,我将其分解以查看切片和仅列出子列表之间的区别,即切片本身是实际列表,而列出的子列表未封装在另一个结构中。
有没有一种简单/有效的方法来从二维列表创建元组列表,从切片中删除子列表并以函数方式将它们传递到 zip,或者实现我的总体目标的其他解决方案?
我认为您可以使用 解包运算符即星号将元组或列表解包为位置参数。
bottom=[sum(item) for item in zip(*topList[1:])]
如果
topList
使用哈希键,您可以改为迭代哈希键
bottom=[sum(item) for item in zip(*[topList[x] for x in range(1, n)])