次のような多くの文字列を含む巨大なリストがあります。
['xxxx','xx','xy','yy','x',......]
現在、別の文字列内に存在するすべての文字列を削除する効率的な方法を探しています。たとえば、'xx' 'x' は 'xxxx' に収まります。
データセットが膨大なので、他に効率的な方法はないかと考えていました
if a in b:
完全なコード: おそらくいくつかの最適化部分を含む:
for x in range(len(taxlistcomplete)):
if delete == True:
x = x - 1
delete = False
for y in range(len(taxlistcomplete)):
if taxlistcomplete[x] in taxlistcomplete[y]:
if x != y:
print x,y
print taxlistcomplete[x]
del taxlistcomplete[x]
delete = True
break
print x, len(taxlistcomplete)
コードの更新版:
for x in enumerate(taxlistcomplete):
if delete == True:
#If element is removed, I need to step 1 back and continue looping.....
delete = False
for y in enumerate(taxlistcomplete):
if x[1] in y[1]:
if x[1] != y[1]:
print x[1],y[1]
print taxlistcomplete[x]
del taxlistcomplete[x[0]]
delete = True
break
print x, len(taxlistcomplete)
列挙型で実装されましたが、これがより効率的であり、削除ステップを実装する方法があるかどうか疑問に思っているので、検索することも少なくなります。
ほんの短い考え...
基本的に私が見たいのは...
要素がリスト内の他の要素と一致しない場合、これをファイルに書き込みます。したがって、「xxxxx」が「xx」、「xy」、「wfirfj」などにない場合... 印刷/保存
とにかくこれ以上最適化できるとは思わないので、新しいシンプルなバージョン...
print 'comparison'
file = open('output.txt','a')
for x in enumerate(taxlistcomplete):
delete = False
for y in enumerate(taxlistcomplete):
if x[1] in y[1]:
if x[1] != y[1]:
taxlistcomplete[x[0]] = ''
delete = True
break
if delete == False:
file.write(str(x))