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
Python 通过列表中的元组索引查找重复项,并随机保留一些_Python_List_Indexing_Tuples - Fatal编程技术网

Python 通过列表中的元组索引查找重复项,并随机保留一些

Python 通过列表中的元组索引查找重复项,并随机保留一些,python,list,indexing,tuples,Python,List,Indexing,Tuples,我的名单如下: [(1, 3, 0.0), (1, 4, 0.0), (3, 4, 0.0),(1,3,0.8),(1,2,0.8),(1,1,1)] 有没有一种方法可以有效地找到元组索引2中所有都有0.0的元素?所以,我想列一个清单 [(1, 3, 0.0), (1, 4, 0.0), (3, 4, 0.0),(1,3,0.8),(1,2,0.8)] 然后我想随机选择0.0和0.8中的一个来保存 基本上,我希望找到一个重复列表,并根据元组中的索引2从每个重复中保留一个元素 我想要更有效的解

我的名单如下:

[(1, 3, 0.0), (1, 4, 0.0), (3, 4, 0.0),(1,3,0.8),(1,2,0.8),(1,1,1)]
有没有一种方法可以有效地找到元组索引2中所有都有0.0的元素?所以,我想列一个清单

[(1, 3, 0.0), (1, 4, 0.0), (3, 4, 0.0),(1,3,0.8),(1,2,0.8)]
然后我想随机选择0.0和0.8中的一个来保存


基本上,我希望找到一个重复列表,并根据元组中的索引2从每个重复中保留一个元素

我想要更有效的解决方案,因为列表中可能有数十万个元素和许多重复项。我知道如何在for循环中低效地实现这一点,但我很难想出一个非常有效的解决方案。谢谢

In [1]: x = [(1, 3, 0.0), (1, 4, 0.0), (3, 4, 0.0),(1,3,0.8),(1,2,0.8),(1,1,1)]

In [2]: y = [item for item in x if item[2] == 0.0 or item[2] == 0.8]

In [3]: y
Out[3]: [(1, 3, 0.0), (1, 4, 0.0), (3, 4, 0.0)]

In [6]: import random

In [7]: random_item = random.choice(y)

In [8]: random_item
Out[8]: (3, 4, 0.0)
随机项=随机选择(y)

这是一个列表理解,它在检查一个条件后(这里,如果位置2项等于0.0),在旧列表的基础上创建一个新列表


使用map获取所有第3项,然后循环查看每个项和调用列表。count(item)方法检查项的计数

list1 = [(1, 3, 0.0), (1, 4, 0.0), (3, 4, 0.0), (1, 3, 0.8), (1, 2, 0.8), (1, 1, 1)]

list2 = [item for item in list1 if map(lambda x: x[2], list1).count(item[2]) > 1]

“映射”元组上的除法,并“保留”通过try-catch创建零除法错误的除法。那是线性的,对吗?映射和保留引号分别暗示概念和结构,不一定是功能。尽量更清楚并消除有疑问的噪音。你想解决什么?是的,但这是一个武断的案例,就像我想保留每个副本中的一个,有人对这个问题投了否决票,因为不可能回答。您想保留位置2中0.0的所有项,还是保留所有具有重复项的项?我想查找重复项列表,并根据元组中的索引2从每个重复项中保留一个元素。对不起,让我澄清一下