Python 删除相似的元素,但通过循环保留唯一的元素
我必须从没有排序的列表中删除类似的元素,如下所示Python 删除相似的元素,但通过循环保留唯一的元素,python,Python,我必须从没有排序的列表中删除类似的元素,如下所示 [(579, 271, 97, 114), (580, 271, 97, 114), (578, 272, 97, 114), (579, 272, 97, 114), (580, 272, 97, 114), (581, 272, 97, 114), (577, 273, 97, 114), (578, 273, 97, 114), (579, 273, 97, 114), (580, 273, 97, 114), (581, 273, 97,
[(579, 271, 97, 114), (580, 271, 97, 114), (578, 272, 97, 114), (579, 272, 97, 114), (580, 272, 97, 114), (581, 272, 97, 114), (577, 273, 97, 114), (578, 273, 97, 114), (579, 273, 97, 114), (580, 273, 97, 114), (581, 273, 97, 114), (582, 273, 97, 114), (577, 274, 97, 114), (578, 274, 97, 114), (579, 274, 97, 114), (580, 274, 97, 114), (581, 274, 97, 114), (582, 274, 97, 114), (577, 275, 97, 114), (578, 275, 97, 114), (579, 275, 97, 114), (580, 275, 97, 114), (581, 275, 97, 114), (578, 276, 97, 114), (579, 276, 97, 114), (580, 276, 97, 114), (581, 276, 97, 114), (579, 277, 97, 114), (22, 460, 97, 114), (23, 460, 97, 114), (133, 460, 97, 114), (134, 460, 97, 114), (21, 461, 97, 114), (22, 461, 97, 114), (23, 461, 97, 114), (24, 461, 97, 114), (132, 461, 97, 114), (133, 461, 97, 114), (134, 461, 97, 114), (135, 461, 97, 114), (20, 462, 97, 114), (21, 462, 97, 114), (22, 462, 97, 114), (23, 462, 97, 114), (24, 462, 97, 114), (131, 462, 97, 114), (132, 462, 97, 114), (133, 462, 97, 114), (134, 462, 97, 114), (135, 462, 97, 114), (136, 462, 97, 114), (20, 463, 97, 114), (21, 463, 97, 114), (22, 463, 97, 114), (23, 463, 97, 114), (24, 463, 97, 114), (131, 463, 97, 114), (132, 463, 97, 114), (133, 463, 97, 114), (134, 463, 97, 114), (135, 463, 97, 114), (136, 463, 97, 114), (20, 464, 97, 114), (21, 464, 97, 114), (22, 464, 97, 114), (23, 464, 97, 114), (24, 464, 97, 114), (131, 464, 97, 114), (132, 464, 97, 114), (133, 464, 97, 114), (134, 464, 97, 114), (135, 464, 97, 114), (136, 464, 97, 114), (21, 465, 97, 114), (22, 465, 97, 114), (23, 465, 97, 114), (132, 465, 97, 114), (133, 465, 97, 114), (134, 465, 97, 114), (135, 465, 97, 114), (22, 466, 97, 114), (133, 466, 97, 114), (134, 466, 97, 114)]
我想在头部留下第一个出现的独特元素,但删除差值为5的元素
我已经编写了一个函数来比较每个元素之间的差异,但它一直在变大
def compare_remove(input_list):
cnt = 0
glob_cnt = 0
output_list = [input_list[0]]
while True:
for i in range(len(input_list)):
if i <= cnt:
print 'jump || '
continue
if abs(output_list[cnt][0] - input_list[i][0]) <= 5:
if abs(output_list[cnt][0] - input_list[i][0]) == 0:
continue
print 'skip ||' + str(output_list[cnt]) +' || ' + str(input_list[i])
continue
else:
print 'append || ' + str(input_list[i])
output_list.append(input_list[i])
print 'loop out || '
input_list = output_list
cnt+=1
if cnt == 100:
break
try:
output_list[cnt]
except:
break
return output_list
def compare_remove(输入列表):
cnt=0
glob_cnt=0
输出列表=[输入列表[0]]
尽管如此:
对于范围内的i(len(输入列表)):
如果我我不确定我是否理解了这个问题,但下面是一个代码,该代码在头部首先出现,但删除了差值为5的元素。
input=[(579, 271, 97, 114), (580, 271, 97, 114), (578, 272, 97, 114), (579, 272, 97, 114), (580, 272, 97, 114), (581, 272, 97, 114), (577, 273, 97, 114), (578, 273, 97, 114), (579, 273, 97, 114), (580, 273, 97, 114), (581, 273, 97, 114), (582, 273, 97, 114), (577, 274, 97, 114), (578, 274, 97, 114), (579, 274, 97, 114), (580, 274, 97, 114), (581, 274, 97, 114), (582, 274, 97, 114), (577, 275, 97, 114), (578, 275, 97, 114), (579, 275, 97, 114), (580, 275, 97, 114), (581, 275, 97, 114), (578, 276, 97, 114), (579, 276, 97, 114), (580, 276, 97, 114), (581, 276, 97, 114), (579, 277, 97, 114), (22, 460, 97, 114), (23, 460, 97, 114), (133, 460, 97, 114), (134, 460, 97, 114), (21, 461, 97, 114), (22, 461, 97, 114), (23, 461, 97, 114), (24, 461, 97, 114), (132, 461, 97, 114), (133, 461, 97, 114), (134, 461, 97, 114), (135, 461, 97, 114), (20, 462, 97, 114), (21, 462, 97, 114), (22, 462, 97, 114), (23, 462, 97, 114), (24, 462, 97, 114), (131, 462, 97, 114), (132, 462, 97, 114), (133, 462, 97, 114), (134, 462, 97, 114), (135, 462, 97, 114), (136, 462, 97, 114), (20, 463, 97, 114), (21, 463, 97, 114), (22, 463, 97, 114), (23, 463, 97, 114), (24, 463, 97, 114), (131, 463, 97, 114), (132, 463, 97, 114), (133, 463, 97, 114), (134, 463, 97, 114), (135, 463, 97, 114), (136, 463, 97, 114), (20, 464, 97, 114), (21, 464, 97, 114), (22, 464, 97, 114), (23, 464, 97, 114), (24, 464, 97, 114), (131, 464, 97, 114), (132, 464, 97, 114), (133, 464, 97, 114), (134, 464, 97, 114), (135, 464, 97, 114), (136, 464, 97, 114), (21, 465, 97, 114), (22, 465, 97, 114), (23, 465, 97, 114), (132, 465, 97, 114), (133, 465, 97, 114), (134, 465, 97, 114), (135, 465, 97, 114), (22, 466, 97, 114), (133, 466, 97, 114), (134, 466, 97, 114)]
srt_input=sorted(input)
mini=srt_input[0][0]
output=[srt_input[0]]
for i in srt_input:
if i[0]<=mini+5:continue
mini=i[0]
output.append(i)
print(output)
---------
[(20, 462, 97, 114), (131, 462, 97, 114), (577, 273, 97, 114)]
input=[(57927197114),(58027197114),(57827297114),(57927297114),(57927297114),(58027297114),(5812727297114),(57727397114),(57727397114),(5782737397114),(57927397114),(5802731114),(58127327397114),(5827327397114),(5727327397114),(57727497114),(57727474114),(57827474114),(578274114),(578274114),(577274114),(577274114),(57727474114),(5774747497),(274197),(97),(97),),(581, 274, 97, 114), (582, 274, 97, 114), (577, 275, 97, 114), (578, 275, 97, 114), (579, 275, 97, 114), (580, 275, 97, 114), (581, 275, 97, 114), (578, 276, 97, 114), (579, 276, 97, 114), (580, 276, 97, 114), (581, 276, 97, 114), (579, 277, 97, 114), (22, 460, 97, 114), (23, 460, 97, 114), (133, 460, 97, 114), (134, 460, 97, 114), (21, 461, 97, 114), (22, 461, 97, 114), (23, 461, 97, 114), (24, 461, 97, 114), (132, 461, 97, 114), (133, 461, 97, 114), (134, 461, 97, 114), (135, 461, 97, 114), (20, 462, 97, 114), (21, 462, 97, 114), (22, 462, 97, 114), (23, 462, 97, 114), (24, 462, 97, 114), (131, 462, 97, 114), (132, 462, 97, 114), (133, 462, 97, 114), (134, 462, 97, 114), (135, 462, 97, 114), (136, 462, 97, 114), (20, 463, 97, 114), (21, 463, 97, 114), (22, 463, 97, 114), (23, 463, 97, 114), (24, 463, 97, 114), (131, 463, 97, 114), (132, 463, 97, 114), (133, 463, 97, 114), (134, 463, 97, 114), (135, 463, 97, 114), (136, 463, 97, 114), (20, 464, 97, 114), (21, 464, 97, 114), (22, 464, 97, 114), (23, 464, 97, 114), (24, 464, 97, 114), (131, 464, 97, 114), (132, 464, 97, 114), (133, 464, 97, 114), (134, 464, 97, 114), (135, 464, 97, 114), (136, 464, 97, 114), (21, 465, 97, 114), (22, 465, 97, 114), (23, 465, 97, 114), (132, 465, 97, 114), (133, 465, 97, 114), (134, 465, 97, 114), (135, 465, 97, 114), (22, 466, 97, 114), (133, 466, 97, 114), (134, 466, 97, 114)]
srt_输入=已排序(输入)
mini=srt_输入[0][0]
输出=[srt_输入[0]]
对于srt_输入中的i:
如果i[0]如果您只是尝试删除重复项,您可以尝试以下操作:
tosort = [ 5, 6, 7, 21, 5, 9, 6, 9]
seen = []
for num in tosort:
if not (num in seen):
seen.append(num)
print(seen)
您的预期输出是什么?差异5
意味着什么-看起来您只是在比较第一个元素。正如@AChampion所问,“差异5”是什么?请给出一些示例。thx!这是我想要的!工作正常。需要一些其他附件,但我可以管理它!