I am told to
Write a function, square(a), that takes an array, a, of numbers and returns an array containing each of the values of a squared.
At first, I ha
def square(a):
squares = []
for i in a:
squares.append(i**2)
return squares
def square(a):
squares = []
for i in a:
squares.append(i**2)
return squares
so how would i do the square of numbers from 1-20 using the above function
One more map solution:
def square(a):
return map(pow, a, [2]*len(a))
from array import *
array('i', [5, 6, 4])
print(*list(map(pow, vals, [2] * len(vals))), sep='\n')
Use a list comprehension (this is the way to go in pure Python):
>>> l = [1, 2, 3, 4]
>>> [i**2 for i in l]
[1, 4, 9, 16]
Or numpy (a well-established module):
>>> numpy.array([1, 2, 3, 4])**2
array([ 1, 4, 9, 16])
In numpy
, math operations on arrays are, by default, executed element-wise. That's why you can **2
an entire array there.
Other possible solutions would be map
-based, but in this case I'd really go for the list comprehension. It's Pythonic :) and a map
-based solution that requires lambda
s is slower than LC.
import numpy as np
a = [2 ,3, 4]
np.square(a)