Как использовать предыдущий список в другом выражении - PullRequest
1 голос
/ 28 апреля 2019

Я пытаюсь использовать список, созданный для Mf_values, для использования в выражении для P0 в моем коде. Я пробовал это следующим образом:

Mf_values=[0.8, 0.9, 1.2, 1.5]
Vinf_values=[Mf_value*(gamma*R*tatm)**0.5 for Mf_value in Mf_values]
print(Vinf_values)
P0=[(1+((gamma-1)/2)*(Mf_values**2)**(gamma/(gamma-1))]
T0=(1+((gamma-1)/2)*(Mf_values**2))*tatm

Я хочу использовать 4 различных значения Mf_values ​​для решения выражения для P0 и T0 и сохранить результаты в списке аналогично Vinf_values. Однако Python выдает мне следующую ошибку:

P0=[(1+((gamma-1)/2)*(Mf_values**2)**(gamma/(gamma-1))]
                                                  ^
SyntaxError: invalid syntax

Как я мог решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Проще делать то, что вы хотите, используя numpy:

import numpy as np

# Change the below values to the correct ones
gamma = 0.5
R = 1.0
tatm = 1.0

Mf_values = np.array([0.8, 0.9, 1.2, 1.5])
Vinf_values = Mf_values * (gamma * R * tatm)**0.5
print(Vinf_values)
P0 = (1 + ((gamma - 1) / 2) * (Mf_values**2))**(gamma/(gamma - 1))
T0 = (1 + ((gamma - 1) / 2) * (Mf_values**2)) * tatm

Если вам действительно нужны списки, вы можете просто преобразовать их в списки, выполнив следующее:

P0 = list(P0)
T0 = list(T0)
0 голосов
/ 28 апреля 2019

вы не можете выполнить pow операцию и другие операции, которые вы пытаетесь сделать с обычным списком Python, вы можете использовать numpy или сделать следующее:

Mf_values = [0.8, 0.9, 1.2, 1.5]

Vinf_values = [ Mf_value * ( gamma * R * tatm ) ** 0.5 for Mf_value in Mf_values ]

Mf_values_2 = [v ** 2 for v in Mf_values ]

tmp = [ v ** ( gamma / (gamma - 1) ) for v in Mf_values_2 ]

P0=[ v * (1 + ( ( gamma - 1 ) / 2)) for v in tmp]

tmp2 = [ v * (1 +  ( (gamma - 1) / 2 )) for v in Mf_values_2 ]

T0 = [tatm * v for v in tmp2 ]

чтобы выполнить операцию добавления между значением и списком, выполните:

# lst is a list and val is an number
result = [val * elem for elem in lst]

, чтобы выполнить операцию добавления между элементами 2 списков, выполните:

# lst1 and lst2 are lists
result = [a + b for a, b in zip(lst1, lst2)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...