Python:在二维列表切片上使用 zip

问题描述 投票:0回答:1

我正在制作一个包含非常大的二维数据列表的条形图。我用以下内容对所有条形图进行了硬编码:

bottom=[sum(item) for item in zip(topList[1], topList[2], topList[3], ...)]
并且效果很好。然后我想到,我可以使用子列表来代替吗?这样我就可以迭代地创建条形图,提高可读性并节省(视觉)空间。

但是下面的代码不起作用:

bottom=[sum(item) for item in zip(topList[1:])]
我收到了切片不可散列的错误,我将其分解以查看切片和仅列出子列表之间的区别,即切片本身是实际列表,而列出的子列表未封装在另一个结构中。 有没有一种简单/有效的方法来从二维列表创建元组列表,从切片中删除子列表并以函数方式将它们传递到 zip,或者实现我的总体目标的其他解决方案?

python matplotlib tuples
1个回答
2
投票

我认为您可以使用 解包运算符即星号将元组或列表解包为位置参数。

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)])
© www.soinside.com 2019 - 2024. All rights reserved.