Python 具有嵌套列表的列表理解

Python 具有嵌套列表的列表理解,python,list,list-comprehension,Python,List,List Comprehension,想问一个关于Python中嵌套列表的问题 我有一个嵌套列表 list_1 = [[1,3,0,1], [1,1,0,2,3,0,4,], [2,1,2,2,3,4]] 我想在嵌套列表上执行舍入和分离操作,但保持它现在的分组状态(为了更清楚,我需要将列表展平并执行操作,然后在相同的组中再次将其展开) 例如,列表“list_1”除以2后的结果应为 list_2 = [[0.5,1.5,0,0.5],[0.5,0.5,0,1,1.5,0,2],[1,0.5,1,1,1.5,2]] 下面是我用于为符

想问一个关于Python中嵌套列表的问题

我有一个嵌套列表

list_1 = [[1,3,0,1], [1,1,0,2,3,0,4,], [2,1,2,2,3,4]]
我想在嵌套列表上执行舍入和分离操作,但保持它现在的分组状态(为了更清楚,我需要将列表展平并执行操作,然后在相同的组中再次将其展开)

例如,列表“list_1”除以2后的结果应为

list_2 = [[0.5,1.5,0,0.5],[0.5,0.5,0,1,1.5,0,2],[1,0.5,1,1,1.5,2]]
下面是我用于为符号列表执行此操作的代码:

list_2 = [round(b,2) for b in [a / 2 for a in list_1]]
你能提出解决这个问题的办法吗。目前我得到的错误

"unsupported operand type(s) for /: 'list' and 'float'"
谢谢。

修复您的代码-

[[j / 2. for j in i] for i in list_1] 
如果您担心性能,您可以乘以.5,而不是除以2(考虑到这是一个二次解决方案,您可能看不到显著的差异,但它应该是有意义的)


文档有一个部分,请考虑阅读。

你有没有考虑过使用<代码> NoMPy < /代码>?或者(特别是当列表不是矩形时),使用嵌套列表理解。Python本身不允许广播算术运算。您的
list_2
输出在第一个子列表中似乎缺少一个元素?谢谢您的回复。你能推荐一个链接吗?在这里我可以看到使用NumPy进行此类操作的示例?我自己也找不到类似的案例。疯狂的莴苣,很好的捕捉。更正。@谵妄莴苣-应为0.5。更正。列出我亲手写的2个结果,只是为了让我想要的更清楚。谢谢。@cᴏʟᴅsᴘᴇᴇᴅ 社区维基:很经典。顺便说一句,如果OP使用的是python 2,结果将不正确。乘法比除法快:
j*0.5
可能稍快一点:)
[[j * .5 for j in i] for i in list_1]