LINUX.ORG.RU

Пытаюсь удалить один елемент из копии списка

 


0

1

max_list_from_all_plates это мой главный список the main list max_list это список в списке и newlist это его копия, я пытаюсь удалить все максимумы из копии, но получаю ошибку: list.remove(x): x not in list

if __name__ == "__main__":
 
    max_index = 0
    max_list_from_all_plates = []
 
    threshold = 0.05
 
    for single_lp in seq:
        maximum_plate_prob = []
        possible_plate_prob = []
        max_list = []
       
        for sign in single_lp:
            high_indexes = []
            for prob_id in range(0,len(sign)):
                if threshold<sign[prob_id]:
                    high_indexes.append([sign[prob_id], prob_id, CATEGORIES[prob_id]])
            max_list.append(high_indexes)
        max_list_from_all_plates.append(max_list)
        h = high_indexes[0]

        newlist = max_list
        ma = [max(h) for h in max_list]
        print("max_list", ma)

        #m = [max() for h in newlist]
    #print(max_list_from_all_plates)

        for i in newlist:
            x = i[0] 
            m = [max(x) for x in newlist]
            #print(m)
        print(m)
        newlist.remove(m)

Перемещено leave из general



Последнее исправление: katemisik (всего исправлений: 1)

Ответ на: комментарий от Morin
for i in newlist:
            x = i[0] 
            m = [max(x) for x in newlist]
            #print(m)
            print("m",m)
            print("newlist", newlist)

output fragment:

m [[0.391, 19, 'J'], [0.366, 19, 'J'], [0.299, 7, '7'], [0.234, 8, '8'], [0.269, 8, '8'], [0.239, 26, 'R'], [0.3, 20, 'K']]
newlist [[[0.082, 3, '3'], [0.062, 13, 'D'], [0.391, 19, 'J'], [0.061, 30, 'V']], [[0.078, 3, '3'], [0.059, 7, '7'], [0.052, 13, 'D'], [0.366, 19, 'J'], [0.074, 30, 'V']], [[0.299, 7, '7'], [0.056, 25, 'P'], [0.056, 28, 'T'], [0.217, 34, 'Z']], [[0.06, 3, '3'], [0.09, 6, '6'], [0.234, 8, '8'], [0.052, 16, 'G'], [0.134, 27, 'S']], [[0.053, 6, '6'], [0.269, 8, '8'], [0.098, 27, 'S']], [[0.063, 8, '8'], [0.14, 15, 'F'], [0.055, 25, 'P'], [0.239, 26, 'R']], [[0.186, 4, '4'], [0.107, 6, '6'], [0.3, 20, 'K']]]

So as you see maximum or just m [[0.391, 19, ‘J’] is in the newlist newlist [[[0.082, 3, ‘3’], [0.062, 13, ‘D’], [0.391, 19, ‘J’],

katemisik
() автор топика
Ответ на: комментарий от katemisik

Цитирую правила форума

Общайтесь на русском языке. Тексты на иностранных языках (кроме английского) снабжайте комментарием так, чтобы в дискуссии смогли принять участие участники, не знакомые с этими языками.

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

Siborgium ★★★★★
()
for i in newlist:
    x = i[0] 
    m = [max(x) for x in newlist]
    #print(m)
print(m)
newlist.remove(m)

Я, конечно, не эксперт в питоне, но это выглядит как ошибка. Возможно, newlist.remove(m) стоит поместить внутрь тела for?

Siborgium ★★★★★
()
Ответ на: комментарий от Siborgium

Я понимаю, что русский язык не твой родной

Так и не мой родной, и что? Мне писать на украинском? Правила одни для всех. Не знаешь язык — другой форум.

fernandos ★★★
()
Ответ на: комментарий от Siborgium

я так думаю что проблема в том что это копия списка В примере где что то удали с копии было что то вроде

list1 = [10, 20, 4, 45, 99]
 
# new_list is a set of list1
new_list = set(list1)
 
# removing the largest element from temp list
new_list.remove(max(new_list))
 
# elements in original list are not changed
# print(list1)
 
print(max(new_list))

просто в моей ситуации сет не получиться использовать и я думаю что это не обязательно не важно где находиться newlist.remove(m), он все равно показывает одну и ту же ошибку

katemisik
() автор топика

#m = [max() for h in newlist]
#print(max_list_from_all_plates)

Бот плюнул рендомно. А форнумчане возбудились?

Bootmen ☆☆☆
()
Последнее исправление: Bootmen (всего исправлений: 4)
Ответ на: комментарий от katemisik
m = [[0.391, 19, 'J'], [0.366, 19, 'J'], [0.299, 7, '7'], [0.234, 8, '8'], [0.269, 8, '8'], [0.239, 26, 'R'], [0.3, 20, 'K']]
newlist = [[[0.082, 3, '3'], [0.062, 13, 'D'], [0.391, 19, 'J'], [0.061, 30, 'V']], [[0.078, 3, '3'], [0.059, 7, '7'], [0.052, 13, 'D'], [0.366, 19, 'J'], [0.074, 30, 'V']], [[0.299, 7, '7'], [0.056, 25, 'P'], [0.056, 28, 'T'], [0.217, 34, 'Z']], [[0.06, 3, '3'], [0.09, 6, '6'], [0.234, 8, '8'], [0.052, 16, 'G'], [0.134, 27, 'S']], [[0.053, 6, '6'], [0.269, 8, '8'], [0.098, 27, 'S']], [[0.063, 8, '8'], [0.14, 15, 'F'], [0.055, 25, 'P'], [0.239, 26, 'R']], [[0.186, 4, '4'], [0.107, 6, '6'], [0.3, 20, 'K']]]

n = 0
for i in newlist:
    i.remove(m[n])
    n += 1

print(newlist)
Morin ★★★★
()
Ответ на: комментарий от katemisik

Эта тема непосредственно о программировании, и потому подходящее место для нее в разделе Development.

seiken ★★★★★
()

@katemisik, не елемент, а элемент

torvn77 ★★★★★
()
Ответ на: комментарий от katemisik

Ты там это, узнай что когда объект удаляется, список меняется и в тыкву превращается. Тестриуй свой говнокод и учись удалять правильно.

peregrine ★★★★★
()
Ответ на: комментарий от katemisik
newlist = [[[0.082, 3, '3'], [0.062, 13, 'D'], [0.391, 19, 'J'], [0.061, 30, 'V']], [[0.078, 3, '3'], [0.059, 7, '7'], [0.052, 13, 'D'], [0.366, 19, 'J'], [0.074, 30, 'V']], [[0.299, 7, '7'], [0.056, 25, 'P'], [0.056, 28, 'T'], [0.217, 34, 'Z']], [[0.06, 3, '3'], [0.09, 6, '6'], [0.234, 8, '8'], [0.052, 16, 'G'], [0.134, 27, 'S']], [[0.053, 6, '6'], [0.269, 8, '8'], [0.098, 27, 'S']], [[0.063, 8, '8'], [0.14, 15, 'F'], [0.055, 25, 'P'], [0.239, 26, 'R']], [[0.186, 4, '4'], [0.107, 6, '6'], [0.3, 20, 'K']]]

for i in newlist:
    m = [m[0] for m in i]
    i.remove(i[m.index(max(m))])
print(newlist)

the intermediate list is hidden in the loop

Morin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.