Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 通过比较下一个列表和上一个列表并存储唯一列表,在Python中迭代列表列表_Python 3.x_List_Loops_Compare_Store - Fatal编程技术网

Python 3.x 通过比较下一个列表和上一个列表并存储唯一列表,在Python中迭代列表列表

Python 3.x 通过比较下一个列表和上一个列表并存储唯一列表,在Python中迭代列表列表,python-3.x,list,loops,compare,store,Python 3.x,List,Loops,Compare,Store,我有一个python列表,每个列表中有两个浮点值。我想对列表列表进行迭代,但我希望将第一个列表存储在结果列表中,并将下一个列表与前一个列表进行比较,如果它与前一个列表不同,那么我需要再次将该列表存储在结果列表中 [0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991999,13.6254421.62525

我有一个python列表,每个列表中有两个浮点值。我想对列表列表进行迭代,但我希望将第一个列表存储在结果列表中,并将下一个列表与前一个列表进行比较,如果它与前一个列表不同,那么我需要再次将该列表存储在结果列表中

[0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991999,13.6254421.6252521,13.6254421,[0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999,13.625.625.625252525252525252525,13.625252525252525252525 7 7 7 7 7 7,13.625[0[0[0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999,13.9,13.13.625,13.625,13.12.25871],[1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.9050619999999998, 0.011995], [1.9050619999999998, 0.011995], [1.9050619999999998, 0.011995], [1.9050619999999998, 0.011995],[1.7293490000000002, 1.5182360000000001]] 我最初的做法是这样的,

resulting_list = []
resulting_list.insert(0,list_of_list[0])
print (resulting_list)
for index, rows in list_of_lists:
if ...

提前感谢!

您就快到了,您将第一个子列表放入结果列表中。然后迭代剩余的项目,您可以检查当前子列表是否与结果列表中的最后一个子列表匹配,如果不匹配,则添加此子列表

list of_list=[[0.9953129999999999,13.625421],[0.9953129999999999,13.625421],[0.9953129999999999,13.625421],
[0.9953129999999999, 13.625421], [0.9953129999999999, 13.625421], [1.6215, 3.26078], [1.6215, 3.26078],
[1.6215, 3.26078], [1.6215, 3.26078], [1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871],
[1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871],
[1.0, 12.25871], [1.0, 12.25871], [1.0, 12.25871], [1.9050619999999998, 0.011995],
[1.9050619999999998, 0.011995], [1.9050619999999998, 0.011995], [1.9050619999999998, 0.011995],
[1.7293490000000002, 1.5182360000000001]]
结果_列表=[_列表的列表[0]]
对于列表中的子列表[1:]:
如果子_列表!=结果_列表[-1]:
结果_列表。追加(子_列表)
打印(结果列表)
输出

[[0.9953129999999999,13.625421],[1.6215,3.26078],[1.0,12.25871],[1.905061999999998,0.011995],[1.729349000000002,1.5182360000000001]]

我认为您需要的是列表上的经典“reduce”操作。这样您就不需要for循环:

import functools
def reducer(x,y):
    if(len(x)==0 or x[-1]!=y): return(x+[y])
    return(x)
functools.reduce(reducer, list_of_lists, list())
以空列表作为累加器的初始值开始,如果新元素与上次添加的元素不同,则继续添加新元素

输出:


[[0.9953129999999999, 13.625421], [1.6215, 3.26078], [1.0, 12.25871], [1.9050619999999998, 0.011995], [1.7293490000000002, 1.5182360000000001]]

如果您想更加简洁,可以在reduce调用中直接传递匿名lambda函数

functools.reduce(lambda x, y: x+[y] if(len(x)==0 or x[-1]!=y) else x, list_of_lists, list())

您期望生成的_列表的输出是什么样子的?我希望看到2D numpy数组中的输出,但列表或列表列表中的输出也可以工作。例如,目前生成的_列表看起来是这样的[[0.99531299999999,13.625421]]