How to generate a new list from another Python list?

Asked

Viewed 74 times

1

I’m having trouble performing list operations in Pyhton. I have a list of values.

frequencia = [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
              19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
              41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
              63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
              85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 120, 150, 200,300,400, 
              500, 600, 700, 800, 900, 1000]

From this list I want to generate a new list of values obtained by applying the following formula in all frequency values.

at = (7.19 * (10**(-3)) + (6.09/((freq**2)+0.227) + 
     (4.81/(((freq-57)**2)+1.5)))) * freq**2 * (10**(-3))

Here’s the code I’m trying to.

frequencia = [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
              19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
              41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 
              63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 
              85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,97, 98, 99, 100, 120, 150, 200, 300,400, 
              500, 600, 700, 800, 900, 1000]
at_seco = []
for i in range(len(frequencia)):
    while len(freq)<len(frequencia):
        freq = frequencia[0]
        freq = freq + 1
        return freq
at = (7.19 * (10**(-3)) + (6.09/((freq**2)+0.227) + 
     (4.81/(((freq-57)**2)+1.5)))) * freq**2 * (10**(-3))
at_seco.append(at)
return at_seco

1 answer

1


From what I understand you want to get the list frequency and apply the formula...

(7.19 * (10**(-3)) + (6.09/((freq**2)+0.227) + (4.81/(((freq-57)**2)+1.5)))) * freq**2 * (10**(-3))

... to each element of that list.

Well, for you to do this you must iterate on the said list applying to each value the said formula.

This way the code can be:

frequencia = [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
              19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
              41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
              63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
              85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 120, 150, 200, 300, 400,
              500, 600, 700, 800, 900, 1000]

at_seco = []
for freq in frequencia:
    at = (7.19 * (10**(-3)) + (6.09/((freq**2)+0.227) + (4.81/(((freq-57)**2)+1.5)))) * freq**2 * (10**(-3))
    at_seco.append(at)

print(at_seco)

Note that the for will scroll through the list frequency and, for each value inserted therein, the said formula shall be applied.

Later the new list is displayed with the help of only the function print.

OBSERVING: The reserved word Return is only used to display output from function. In this case, the Return is unnecessary.


Another way to resolve this issue is:

frequencia = [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
              19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
              41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
              63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
              85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 120, 150, 200, 300, 400,
              500, 600, 700, 800, 900, 1000]


def at(freq):
    return (7.19 * (10**(-3)) + (6.09/((freq**2)+0.227) + (4.81/(((freq-57)**2)+1.5)))) * freq**2 * (10**(-3))


at_seco = [at(i) for i in frequencia]

print(at_seco)

Note that this second code is generated from a comprehensilist on. The noose for scroll through the list frequency and, for each iterated value, calculates the value of at - which in this case is generated by a function def - inserted the corresponding value in the list at_seco.

  • 2

    That was exactly my question, thank you very much

Browser other questions tagged

You are not signed in. Login or sign up in order to post.