我在 Python 中遇到了方括号的问题,我编写了一段代码来产生以下输出:
[[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
但是我想用它执行一些计算,但是方括号不允许。
如何删除括号?我看到了一些这样做的例子,但我不能把它们应用到这个案例中。
给予
d = [[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
还有你的 < em > 具体问题:
使用列表内涵:
new_d = [i[0] for i in d]
会给你这个
[180.0, 173.8, 164.2, 156.5, 147.2, 138.2]
然后你可以访问个别项目与适当的索引,例如,new_d[0]会给你 180.0等,你可以使用数学。
new_d[0]
180.0
如果要收集数据,应该使用括号或括号。
注意 ,此解决方案专门针对你的问题/问题,即 它不能提供一个普遍的解决方案。
使用嵌套列表内涵将列表平坦化为 “去掉支架”。这将取消嵌套每个列表存储在您的列表列表!
list_of_lists = [[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]] flattened = [val for sublist in list_of_lists for val in sublist]
嵌套列表理解的计算方式与它们展开的方式相同(即为每个新循环添加换行符和制表符)。因此,在这种情况下:
flattened = [val for sublist in list_of_lists for val in sublist]
等同于:
flattened = [] for sublist in list_of_lists: for val in sublist: flattened.append(val)
最大的区别在于,列表比较的计算速度比展开的循环快得多,并且消除了追加调用!
如果你在一个子列表中有多个项目,列表编译器甚至会将其压平
>>> list_of_lists = [[180.0, 1, 2, 3], [173.8], [164.2], [156.5], [147.2], [138.2]] >>> flattened = [val for sublist in list_of_lists for val in sublist] >>> flattened [180.0, 1, 2, 3, 173.8, 164.2, 156.5, 147.2,138.2]
>>> lis=[[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]] >>> [x[0] for x in lis] [180.0, 173.8, 164.2, 156.5, 147.2, 138.2]
我会使用 itertools.chain-这也会在每个子列表中满足 > 1个元素:
itertools.chain
from itertools import chain list(chain.from_iterable([[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]))