lst
has less elements than num
use
for i in range(min(num, len(lst))):`
or something like
for fname in reversed(lst):# reversed to continue the pop order
#your code
Explanation
#lets say we have
num = 4
data = [1,2,3]
for i in range(num): # range(4) = [0,1,2,3] so it witl repeat you code 4 times
data.pop() #remove last element
#first 3 times, it works, but at the last one 'data' is empty, so you get an exception
if you do:
for i in range(min(num , len(data))):
# min(num , len(data)) = min(4,3) = 3
# so you get the corrent number of iterations
Finally:
for fname in reversed(data):
#is the same to
for fname in [3,2,1]:
#'reversed' just change the order of your list
#so it will work in this order, 3, 2 and finishes with 1
Hope it helps
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…