我有这个代码,它将一个数字与一个数字(我在代码中称为项目)中的数字进行比较,以查看它是否已存在。如果它然后打印到输出文件,如果它不打印那么只打印一次。
问题如何确保如果数字不在域范围之间,则只打印一次。 (我使用了真实和虚假的陈述,但这不起作用,因为当它是假的,它会在下面的代码上打印几个重复 - 我不知道如何实现,以便它打印一次不在域范围内的数字多次)
for item in lookup[uniprotID]:
for varain in wholelookup[uniprotID]:
for names in wholeline[uniprotID]:
statement=False
if re.search(r'\d+',varain).group(0)==item and start <= int(item) <= end:
result = str(int(item) - start + 1)
if varain in names.split(' '):
statement = True
print ">{0} | at position {1} | start= {2}, end= {3} | description: {4} | {5}".format(uniprotID, result, start, end, varain, names)
if statement == True:
print(''.join(makeList[start-1:end]))
答案 0 :(得分:1)
存储不在范围内的值。
stored_prints = {}
if not ( start <= int( item ) <= end ):
try:
stored_prints[item]++
except:
stored_prints[item] = 1
print stored_prints
你必须根据自己的需要进行格式化和设计,但如果我理解你的问题,这应该做你需要做的事。
答案 1 :(得分:1)
基于此的东西可能对您有用:
already_seen = set()
for line in sys.stdin:
if line not in already_seen:
already_seen.add(line)
sys.stdout.write(line)
不是说,如果你的文件很大,你最终可能会消耗大量的虚拟内存。如果是这样,请查看anydbm或bloom过滤器。