¿Cómo puedo elevar los números en la lista a un cierto poder?
Utilice la lista de comprensión:
def power(my_list): return [ x**3 for x in my_list ]
https://docs.python.org/3.4/tutorial/datastructures.html#list-comprehensions
def turn_to_power(list, power=1): return [number**power for number in list]
Ejemplo:
list = [1,2,3] turn_to_power(list) => [1, 2, 3] turn_to_power(list,2) => [1, 4, 9]
UPD: también debe considerar leer sobre la función pow(x,y)
de math
lib: https://docs.python.org/3.4/library/math.html
Nadie ha mencionado map
and functools.partial
y la respuesta aceptada no menciona pow
, pero en aras de la exhaustividad, estoy publicando esta solución:
import functools bases = numbers = [1,2,3] power = exponent = 3 cubed = list(map(functools.partial(pow, exponent), numbers))
Yo mismo usaría una lista de comprensión según lo sugerido, pero creo que functools.partial
es una función muy interesante que merece ser compartida. Robé mi respuesta de @ sven-marnach aquí, por cierto.
Otro patrón de map
, utilizando lambda
lugar de function.partial()
:
numbers=[1,2,3,4] squares=list(map(lambda x:pow(x,2),numbers)) print(squares)
En realidad, su script hace lo que quiere, y ese es el resultado (tenga en cuenta que está aplicando la función de potencia a [1,2,3,4,5,6,7,8,9])
(‘Lista cúbica:’, [1, 8, 27, 64, 125, 216, 343, 512, 729])
Su problema es que también modificó la lista original, debido a la naturaleza en el tipo de lista en python. Si desea conservar también su lista original, debe pasar una copia a su función. Puedes hacerlo asi
def main(): numbers=[1,2,3,4,5,6,7,8,9] numbers3=power(numbers[:]) print('Original list:', numbers) print('Cubic list:', numbers3)
Use una lista de comprensión para boost la velocidad:
print('Original list:', numbers) print('Cubic list:', [n**3 for n in numbers])
Simplemente puedes hacer:
numbers=[1,2,3,4,5,6,7,8,9] numbers3 = [] for n in numbers: numbers3.append(n**3) print('Original list:', numbers) print('Cubic list:', numbers3)