У меня есть два списка:
index = [1,1,1,1,2,2,2,2,3,4,5,5,5,6,7,8,9,10,10,10]
value = [2,3,2,1,2,4,6,8,2,1,5,2,7,2,2,2,1,55,1,11]
Одинаковой длины, но в ответ я хочу получить уникальный номер из списка индексов и наименьшее значение из списка значений в соответствии с индексом
Результат долженбыть похожим на:
index_result = [1,2,3,4,5,6,7,8,9,10]
value_result = [1,2,2,1,2,2,2,2,1,1]
Я пытался:
index = [1,1,1,1,2,2,2,2,3,4,5,5,5,6,7,8,9,10,10,10]
value = [2,3,2,1,2,4,6,8,2,1,5,2,7,2,2,2,1,55,1,11]
index_result = []
value_result = []
#global small_value
j = 0
while j < len(index):
if j == 0:
try:
if index[j] == index[j+1]:
small_value = min(value[j],value[j+1])
elif index[j] != index[j+1]:
index_result.append(index[j])
value_result.append(value[j])
except IndexError as e:
print(e)
pass
j = j + 1
print('small value is for index j ==0')
print(small_value)
elif j <len(index) - 1:
try:
# if index[j] == index[j-1]:
# small_value = min(value[j],value[j-1])
if index[j] != index[j+1] and index[j] != index[j-1]:
index_result.append(index[j])
value_result.append(value[j])
elif index[j] != index[j+1] and index[j] == index[j-1]:
index_result.append(index[j])
value_result.append(small_value)
except IndexError as e:
print(e)
pass
j = j + 1
print('small value is for index 0 < j <len(index)')
print(small_value)
elif j == len(index) - 1:
try:
if index[j] == index[j-1]:
small_value = min(value[j],value[j-1])
index_result.append((index[j]))
value_result.append(small_value)
elif index[j] != index[j-1]:
index_result.append(index[j])
value_result.append(value[j])
except IndexError as e:
print(e)
pass
j = j + 1
print('small value is for j = len(index) - 1')
print(small_value)
print (index_result)
print (value_result)
Результат близок к ожидаемому, но все еще не так:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [2, 2, 2, 1, 2, 2, 2, 2, 1, 1]