【发布时间】:2016-12-30 00:41:24
【问题描述】:
我是 python 新手,我有一个关于元组列表比较的问题。 我有一个列表,其中包含元组中第二个元素的重复项,我只想打印该元组的第一次出现。 例如,对于这个列表:
[(1, 2), (5, 10), (6, 10), (24, 35), (30, 35)]
我有这个功能:
def func(lst):
list_first = []
#Checks if 2 elements have the same second value.
for i in range(len(lst)-1):
if(lst[i][1] == lst[i+1][1]):
first = (lst[i][0]),lst[i][1]
list_first.append(first) #append only the first element
print list_first
我的函数的输出是:
[(5, 10), (24, 35), (30, 35)]
但我的预期输出是:
[(5, 10), (24, 35)]
我该如何解决?
更新
我必须在列表列表中执行所有这些算法。 所以对于输入:
[[(0, 3), (1, 3), (2, 3), (3, 3), (4, 3)], [(5, 3), (6, 3), (7, 3), (8, 3), (9, 3)], [(10, 3), (11, 3), (12, 3), (13, 3), (14, 3)]]
我希望输出是:
[[(0, 3)], [(5, 3)], [(10, 3)]]
我已经尝试过改变我在这里得到的解决方案。 但我得到的只是:
[[(0, 3)], [(0, 3)], [(0, 3)]]
【问题讨论】:
-
尝试用不同的例子在纸上运行程序,包括这个 [(1, 2), (5, 10), (6, 10), (24, 35), (30, 35) , (40, 35)]。这将向您展示算法的一些问题。
标签: python python-2.7 list tuples