Найти - Пользователи
Полная версия: На основании сравнения 2-х списков создание нового списка
Начало » Python для новичков » На основании сравнения 2-х списков создание нового списка
1
AndryGrey
Коллеги, долго мучаюсь, но не получается написать довольно простой алгоритм. На входе есть два списка, надо в зависимости от их значений создать новый список. Написал такой код:

  
[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]
#Подскажите, что я неправильно делаю?
			
		
	
doubtpoint
Вы делаете два вложенных цикла и получаете каждый с каждым пару(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)
AndryGrey
Спасибо, понял, надо было с помощью range решать эту задачу и правильно условия расставить
py.user.next
AndryGrey
На входе есть два списка, надо в зависимости от их значений создать новый список.
Задание неинформативно. Непонятно, что нужно сделать и как.

AndryGrey
Подскажите, что я неправильно делаю?
Ты неправильно ставишь задачу. Абсолютно не информативная постановка задачи в стиле “мне нужно прийти туда, не знаю куда, и там нужно сделать то, не знаю что”. Скажите, как мне это сделать? Ну, ответ простой: сделай это как-то так, сам придумай как.
AD0DE412
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]

зы еще можете посмотреть в сторону функциональщины там …
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB