Как обнулить все значения кортежей, кроме минимальных и максимальных значений - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь найти минимальное и максимальное значения определенного кортежа и инициализировать все остальные значения нулем

Скажем, у меня есть кортеж p = (1,2,3) Тогда p_new будет: ( 1,0,3)

Я пытаюсь сделать это простым и элегантным способом без успеха

На данный момент это реализация:

p = (1,2,3)

# finding the min/max indexes:
mx = p.index(max(p))
mn = p.index(min(p))

p_new = []
for i in range(len(p)):
    if i == mx:
        p_new.append(p[mx])
    elif i == mn:
        p_new.append(p[mn])
    else:
        p_new.append(0)
print('p_new is:',tuple(p_new))enter code here

Вывод кода:

p_new is: (1, 0, 3)

Process finished with exit code 0

1 Ответ

3 голосов
/ 13 апреля 2020
p = (1,2,3)
p = tuple( i if i in [min(p), max(p)] else 0 for i in p )

print('p_new is:',tuple(p_new))
...