Как я могу элегантно добавить элемент списка в цикл? - PullRequest
0 голосов
/ 31 октября 2019

Это простой вопрос. Вот пример:

Данные:

score = [10, 20]
weight = [0.2, 0.8]

Вот мой код:

score = [10, 20]
weight = [0.2, 0.8]
score_list = []
for i, k1 in enumerate(score):
    k_score = 100 if k1 < 20 else 95
    k_score *= weight[i]
    score_list.append(k_score)
sum_score = sum(score_list)

Использовать код выше я могуполучить хочу, хочу, но я думаю, что это не элегантно, я хочу настроить, вы можете дать какой-нибудь совет?

Ответы [ 3 ]

0 голосов
/ 31 октября 2019

Ну, если вы пытаетесь NumPy, вы можете получить dot product т.е.

score = np.array(score)
output = np.dot(np.where(score<20,100,95),weights)

print(output)
96
0 голосов
/ 31 октября 2019

Попробуйте следующий код, надеюсь, это поможет:

sum([100*wei if sco < 20 else 95*wei for sco,wei in zip(score,weight)])

Ouput:

96.0
0 голосов
/ 31 октября 2019

Вы можете просто взять промежуточную сумму вместо сохранения каждого отдельного значения в score_list:

score = [10, 20]
weight = [0.2, 0.8]
sum_score = 0

for i, k1 in enumerate(score):
    k_score = 100 if k1 < 20 else 95
    k_score *= weight[i]
    sum_score += k_score

print(sum_score)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...