我在这个论坛中发现了一些解决方案,但他们不像我所希望的那样工作。以下的输入数据被用来:确定一个列表是否包含独特元素
ALY1 ATH BOL BRA
ALY2 ATH BOL BRA
ALY3 ATH BOL BRA
ALY4 ATH BOL BRA
ALY5 BOL BOL BRA
ALY6 ATH BOL BRA BOL
我只想保留行1,2,3和4.但不是5和6,因为这里出现重复。下面是我用:
f_groups = open(args[1], "r")
f_idl_group = open(args[2], "w")
def allUnique(x):
seen = set()
return not any(i in seen or seen.add(i) for i in x)
for line in f_groups :
line_elements = line.split()
identifyers = line_elements[0:]
if allUnique(identifyers) :
print("all is well" + identifyers[0])
#write to file
使用脚本上面,所有的线路经过,但使用:
if not allUnique(identifyers) :
那么只有线5和6通。 后者是我所期望的,但我想要的是相反的,只能通过第1,2,3,4行。哪一个失败。 任何帮助表示赞赏。 谢谢。
查看列表是否包含所有唯一元素的最简单方法是使用len(x)== len(set(x))'。 'set'将删除所有重复项,然后查看元素数是否改变。 –