I think your solution is correct if need drop columns by positions, also is possible use list comprehension:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
df1 = df*10
dataframes = [df,df1]
#get changed list of df
dataframes = [df.drop(df.columns[[0,2]],axis=1) for df in dataframes]
print (dataframes)
[ B D E F
0 4 1 5 7
1 5 3 3 4
2 6 5 6 3, B D E F
0 40 10 50 70
1 50 30 30 40
2 60 50 60 30]
#original not changed
print (df1)
A B C D E F
0 10 40 70 10 50 70
1 20 50 80 30 30 40
2 30 60 90 50 60 30
#get changed all df inplace, operation return `None`, so output is _
_ = [df.drop(df.columns[[0,2]],axis=1, inplace=True) for df in dataframes]
print (df1)
B D E F
0 40 10 50 70
1 50 30 30 40
2 60 50 60 30
and your solution need not assign, but inplace=True:
for col in dataframes:
print (col.head(1))
col.drop(col.columns[[0,2]],axis=1, inplace=True)
print (col.head(1))
print (df1)
B D E F
0 40 10 50 70
1 50 30 30 40
2 60 50 60 30