Форум сайта python.su
Коллеги, долго мучаюсь, но не получается написать довольно простой алгоритм. На входе есть два списка, надо в зависимости от их значений создать новый список. Написал такой код:
[volt = [220, 400, 220, 400, 400, 220, 220] load = ['Motor', 'Lihgt', 'Socket', 'Motor', 'Motor', 'Light', 'Socket'] lnc =[] nc = [] for j in load: if j == 'Motor': lnc.append(int (1)) else: lnc.append(int (0)) print (lnc, len (lnc)) for i in volt: for j in lnc: if int (i) == 220 and j == 1: nc.append (int(2)) if int (i) == 220 and j == 0: nc.append (int (3)) if int (i) == 400 and j == 1: nc.append (int (4)) if int (i) == 400 and j == 0: nc.append (int (5)) print (nc)] # Первая часть кода работает и выдаёт значения: [1, 0, 0, 1, 1, 0, 0] 7 #А со второй проблемы, вместо списка из семи значений получаю: [2, 3, 3, 2, 2, 3, 3, 4, 5, 5, 4, 4, 5, 5, 2, 3, 3, 2, 2, 3, 3, 4, 5, 5, 4, 4, 5, 5, 4, 5, 5, 4, 4, 5, 5, 2, 3, 3, 2, 2, 3, 3, 2, 3, 3, 2, 2, 3, 3] #Видно неправильную логику прописал. #Надо, что бы последовательно проверялись первые, вторые и т.д. элементы списков по нескольким условиям и формировался новый список, правильный результат должен быть такой [2, 5, 3, 4, 4, 3, 3] #Подскажите, что я неправильно делаю?
Отредактировано AndryGrey (Май 2, 2022 15:19:41)
Офлайн
Вы делаете два вложенных цикла и получаете каждый с каждым пару(7*7 элементов)
volt = [220, 400, 220, 400, 400, 220, 220] load = ['Motor', 'Lihgt', 'Socket', 'Motor', 'Motor', 'Light', 'Socket'] lnc =[] nc = [] if (len (volt)!=len (load)): print ('volt и load разной длинны') else: for j in range(len (volt)): if load[j] == 'Motor': lnc.append(int (1)) if volt[j] == 220 : nc.append (int(2)) elif volt[j] == 400 : nc.append (int (4)) else: lnc.append(int (0)) if volt[j] == 220 : nc.append (int(3)) elif volt[j] == 400 : nc.append (int (5)) print (lnc, len (lnc)) print (nc)
Офлайн
Спасибо, понял, надо было с помощью range решать эту задачу и правильно условия расставить
Офлайн
AndryGreyЗадание неинформативно. Непонятно, что нужно сделать и как.
На входе есть два списка, надо в зависимости от их значений создать новый список.
AndryGreyТы неправильно ставишь задачу. Абсолютно не информативная постановка задачи в стиле “мне нужно прийти туда, не знаю куда, и там нужно сделать то, не знаю что”. Скажите, как мне это сделать? Ну, ответ простой: сделай это как-то так, сам придумай как.
Подскажите, что я неправильно делаю?
Отредактировано py.user.next (Май 2, 2022 22:31:06)
Офлайн
lnc.append(int (1))шикарно )
names = ['Motor', 'Lihgt', 'Socket', 'Motor', 'Motor', 'Light', 'Socket'] volt = [220, 400, 220, 400, 400, 220, 220] FILTER_NAME = 'Motor' FILTER_VOLT = 220 def valuer(var1, var2): if var1 == FILTER_NAME: return 2 if var2 == FILTER_VOLT else 4 else: return 3 if var2 == FILTER_VOLT else 5 print([valuer(names[i], volt[i]) for i in range(len(names))])
[2, 5, 3, 4, 4, 3, 3]
Отредактировано AD0DE412 (Май 9, 2022 19:35:45)
Офлайн