展开列表清单

我在Python中有方括号的问题。 我写了一个产生以下输出的代码:

[[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]] 

但是我想用一些计算,但方括号不会让我。

我怎样才能删除括号? 我看到了一些例子,但是我不能把它们应用到这个案例中。

使用嵌套列表理解来展开列表以“删除括号” 。 这将取消列表存储在列表中的每个列表!

 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 comp的评估速度比解开的循环快得多,并且消除了append调用!

如果你有一个子列表中的多个项目,列表组合将甚至扁平化。 即

 >>> 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] 

我会使用itertools.chain – 这也将迎合每个子列表中> 1元素:

 from itertools import chain list(chain.from_iterable([[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]] 

使用列表理解:

 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等,然后你可以使用math。

如果你要有一个数据集合,你将有一些括号或括号。

请注意 ,此解决scheme专门针对您的问题/问题, 但不提供通用解决scheme 。 也就是说,它会适合你的情况。

 >>> 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] 
Interesting Posts