Suppose I have this pandas.Series:
import pandas as pd
returns = pd.Series([1,2,3,4,5])
And I want to do some simple mathematics stuff on it and save the results in a new list. So I 'll explain them.
For the first item I want to calculate Variance of returns items:
import numpy as np
def First(Ser):
    return np.var(Ser)
For rest of them I want to do this:
def rest(variances , returns , i):
    return 0.94 * variances[i-1] + ( 1 - 0.94 ) * (returns[i-1])**2
Then using list comprehension:
variances = [rest(variances , returns , i) for i in range(len(returns)) if i!=0 else First(returns)]
But it gives me this error:
variances = [rest(variances , returns , i) for i in range(len(returns)) if i!=0 else First(returns)]
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ^
SyntaxError: invalid syntax
How can I avoid using a for loop for this purpose?
Full script:
import pandas as pd
import numpy as np
returns = pd.Series([1,2,3,4,5])
def First(Ser):
    return np.var(Ser)
    
def rest(variances , returns , i):
    return 0.94 * variances[i-1] + ( 1 - 0.94 ) * (returns[i-1])**2
    
variances = [rest(variances , returns , i) for i in range(len(returns)) if i!=0 else First(returns)]    
More explaination:
What is variances?
variances is a list that I want to be built with the List Comprehension technique! I want to use variances simultaneously as it is created. My basic goal is to avoid using a for loop.
Algorithm & Expected output with use of for loop:
import pandas as pd
import numpy as np
returns = pd.Series([1,2,3,4,5])
variances = []
for item in range(len(returns)):
    if item == 0:
        variances.append(np.var(returns))
    else:
        variances.append(0.94*variances[item-1] + (1-0.94)*(returns[item-1])**2)
print(variances)
[2.0, 1.94, 2.0636, 2.4797840000000004, 3.290996960000001]
 
     
     
    