Olá,
Bom, isso não responde à dúvida original, mas ao menos o comportamento
que vocês está tendo. Ao usar um * , como se fosse uma multiplicação,
você está criando em y uma nova lista cujos elementos são os elementos
de f replicados por a*b vezes...veja o exemplo
>>> a = 1
>>> b = 2
>>> f = range(10)
>>> a*b*f
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=2
>>> a*b*f
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,
3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Aparentemente isto não é o que você deseja. Quanto a usar ** , isto
não é possível em listas. Agora, se o que deseja é criar uma nova
lista com a equação sendo aplicada ao range específico, fica a
sugestão de usar map sobre sua lista. Segue um exemplo:
>>> a = 10
>>> b = 20
>>> f = range(1,11)
>>> y = map(lambda x: a*(b**2)/(x**2),f)
>>> y
[4000, 1000, 444, 250, 160, 111, 81, 62, 49, 40]
Espero ter sido claro.
--
Roberto