Заменить минимальное и максимальное значение в списке - PullRequest
0 голосов
/ 20 ноября 2018

Мне нужна помощь, чтобы написать функцию python для списков, которая будет выполнять две вещи.

В первом случае он заменит самые большие и самые маленькие элементы в списке числами 5000 (для самых больших) и -5000.(для самых маленьких).

thelist = input("Please input a list with numbers: ")
mylist = list(map(int, thelist.split()))

Пожалуйста, введите список с номерами: 1 2 3 4 5 6 7 8 9 10

print(mylist)

Результат: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Честно говоря, я понятия не имею, как заменить цифры 1 и 10 числами 5000 и -5000 с помощью функции py.Я могу получить минимальное и максимальное число, но я не знаю, как их заменить.

Ответы [ 5 ]

0 голосов
/ 20 ноября 2018

Вы можете использовать mylist[0] = -5000 и mylist[-1] = 5000.

Отрицательный индекс отсчитывается с правой стороны списка

Или, если ваш список перемешан

Попробуйтеэто,

min_pos = mylist.index(min(mylist))
max_pos = mylist.index(max(mylist))

mylist[min_pos] = -5000
mylist[max_pos] = 5000

print(mylist)

Надеюсь, что это отвечает на ваш вопрос

0 голосов
/ 20 ноября 2018

В немного сжатом формате, используя понимание списка, Вы можете использовать

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [-5000 if x == min(a) else 5000 if x == max(a) else x for x in a]

Он заменяет минимальные элементы на -5000, а максимальные - на 5000. f Существует несколько минимальных значений, все они будут заменены. Вы можете использовать функцию для использования значений, отличных от -5000, 5000.

0 голосов
/ 20 ноября 2018
mylist[mylist.index(min(mylist))] = -5000
mylist[mylist.index(max(mylist))] = 5000
0 голосов
/ 20 ноября 2018

Вы можете иметь такую ​​функцию:

In [361]: def replace_vals(l):
     ...:     min_index = l.index(min(l))  # min(l) finds minimum of list. 'l.index()' finds the index of a given value.
     ...:     max_index = l.index(max(l))  # max(l) finds maximum of list.
     ...:     l[min_index] = -5000 # Just replace min_index found above by -5000
     ...:     l[max_index] = 5000  # Just replace max_index found above by 5000
     ...:     
In [355]: lst=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [362]: replace_vals(lst)

In [363]: lst
Out[363]: [-5000, 2, 3, 4, 5, 6, 7, 8, 9, 5000]
0 голосов
/ 20 ноября 2018

Это можно сделать двумя фазами в течение мин / макс:

arr = [1,2,3,4]
arr[arr.index(max(arr))] = 5000

Это дает:

[1, 2, 3, 5000]

Две фазы здесь:

  1. Найти максимальное значение: max(arr). В этом примере значение будет 4.
  2. Найти индекс максимального значения: arr.index(4). В этом примере индекс будет 3.

Две фазы приводят к назначению по индексу в ячейке максимального значения. Обратите внимание, что это предполагает уникальное максимальное значение.

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