2016-01-14 1 views
0

Я сортирую двумерный список, который выглядит следующим образом [[a, 1, 2], [b, 3, 4], [c, 5, 6]]. Я попытался сортировать список, пока не понял, что при этом я только сортировал одно значение, и наибольшее значение может быть удалено, например. [[a, 4, 2] [b, 3, 5] [c, 7, 8]]. Поэтому я решил использовать цикл for и создать второй список, в котором будет помещено самое низкое значение каждого списка, а затем удалено из основного списка, но это не сработало, поэтому я не могу придумать никаких хороших идей, которые эффективный.Python 3.x удаляет низшее числовое значение в двумерном списке

Главная проблема Код:

if Class == 1: 
    print('\n\t{}'.format(Class_1)) 
    Class_1.sort() 
    print('\n\t{}'.format(Class_1)) 
    Class_1_length = len(Class_1) 
    Class_1.sort(key=lambda x: x[2]) 
    print(Class_1) 
    for Student in range(0, Class_1_length): 
     if Class_1[Student][1] > Class_1[Student][2]: 
      #Method of removing value 2 
     if Class_1[Student][1] < Class_1[Student][2]: 
      #Method of removing value 1 
     if Class_1[Student][1] == Class_1[Student][2]: 
      #Method of removing value 2 
    print(Class_1) 

Когда я попытался с помощью поп это было бы сказать мне, что строка не может быть истолковано как целое число, но путем добавления Int() в сторону поп() это сказать, что мне индекс .pop был вне допустимого диапазона. Когда я создал второй список, [x для x в списке1, если x отсутствует в списке2] или что-то подобное не сделал ничего.

Мне нужен метод, который будет работать независимо от того, что числа 1, 2, 3, 4, 5 и 6 находятся в этом списке - [[a, 1, 2], [b, 3, 4] , [с, 5, 6]]

+2

Что вы ожидаемый результат? – AChampion

+0

Скажите, что список был [[a, 3, 7], [b, 8, 8], [c, 6, 5]]. Я хочу, чтобы список выводился следующим образом: [[a, 7], [b, 8], [c, 6]]. –

ответ

1

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

>>> d = [['a', 1, 2], ['b', 3, 4], ['c', 5, 6]] 
>>> [(x, max(y, z)) for x,y,z in d] 
[('a', 2), ('b', 4), ('c', 6)] 
>>> d = [['a', 3, 7], ['b', 8, 8], ['c', 6, 5]] 
>>> [(x, max(y, z)) for x,y,z in d] 
[('a', 7), ('b', 8), ('c', 6)] 
+0

Когда я добавлю его в код, я оставлю его как x, y и z или изменим его. –

+0

@ jaxt65 Вам не нужно его менять, но вы можете –

+0

Они локально определены, вы можете использовать их как есть любое другое имя, которое, по вашему мнению, является подходящим, например. '[(name, max (test_1, test_2)) для имени, test_1, test_2 в Class_1]' будет одинаково работать. – AChampion

 Смежные вопросы

  • Нет связанных вопросов^_^