On 09/05/2012 09:36, lilin Yi wrote:
//final_1 is a list of Identifier which I need to find corresponding
files(four lines) in x(x is the file) and write following four lines
in a new file.
//because the order of the identifier is the same, so after I find the
same identifier in x , the next time I want to start from next index
in x,which will save time. That is to say , when the if command
satisfied ,it can automatically jump out out the second while loop and
come to the next identifier of final_1 ,meanwhile the j should start
not from the beginning but the position previous.
//when I run the code it takes too much time more than one hour and
give the wrong result....so could you help me make some improvement of
the code?
i=0
offset_1=0
while i<len(final_1):
j = offset_1
while j<len(x1):
if final_1[i] == x1[j]:
new_file.write(x1[j])
new_file.write(x1[j+1])
new_file.write(x1[j+2])
new_file.write(x1[j+3])
offset_1 = j+4
quit_loop="True"
if quit_loop == "True":break
else: j=j +1
i=i+1
This is roughly equivalent:
j = 0
for f in final_1:
try:
# Look for the identifier starting at index 'j'.
j = x1.index(f, j)
except ValueError:
# Failed to find the identifier.
pass
else:
# Found the identifier at index 'j'.
new_file.write(x1[j])
new_file.write(x1[j + 1])
new_file.write(x1[j + 2])
new_file.write(x1[j + 3])
# Skip over the 4 lines.
j += 4
--
http://mail.python.org/mailman/listinfo/python-list