请看下面的代码:
import string
from collections import defaultdict
first_complex=open( "residue_a_chain_a_b_backup.txt", "r" )
first_complex_lines=first_complex.readlines()
first_complex_lines=map( string.strip, first_complex_lines )
first_complex.close()
second_complex=open( "residue_a_chain_a_c_backup.txt", "r" )
second_complex_lines=second_complex.readlines()
second_complex_lines=map( string.strip, second_complex_lines )
second_complex.close()
list_1=[]
list_2=[]
for x in first_complex_lines:
if x[0]!="d":
list_1.append( x )
for y in second_complex_lines:
if y[0]!="d":
list_2.append( y )
j=0
list_3=[]
list_4=[]
for a in list_1:
pass
for b in list_2:
pass
if a==b:
list_3.append( a )
kvmap=defaultdict( int )
for k in list_3:
kvmap[k]+=1
print kvmap
Run Code Online (Sandbox Code Playgroud)
通常我使用izip或izip_longest来为两个循环播放,但这次文件的长度是不同的.我不想要一个无条目.如果我使用上述方法,则运行时间变为增量且无用.我怎么能让两个for循环去?
干杯,Chavanak
您想要转换list_2为集合,并检查成员身份:
list_1 = ['a', 'big', 'list']
list_2 = ['another', 'big', 'list']
target_set = set(list_2)
for a in list_1:
if a in target_set:
print a
Run Code Online (Sandbox Code Playgroud)
输出:
big
list
Run Code Online (Sandbox Code Playgroud)
集合为您提供了O(1)访问时间来确定成员资格的优势,因此您只需要list_2一次读取(创建集合时).此后,每次比较都在恒定时间内发生.
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |