У меня есть список, содержащий:

NewL = [(1.1,[01,02]),(1.2,[03,04]),(1.3,[05,06])]

И я использовал перечисление для получения списка, как указано выше, где квадратные скобки, содержащие [01,02], [03,04] и [05,06], как правило, получены из другого списка. Я покажу это на всякий случай:

L = [[01,02],[03,04],[05,06]]

И изначально список вывода просто:

OutputList = [1.1,1.2,1.3]

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

Проблема, с которой я сейчас сталкиваюсь, скажем, я хочу вывести только значение для [05,06], которое составляет 1,3 от NewL. Как бы я это сделал? Я думал о чем-то вроде:

for val in NewL:
    if NewL[1] == [05,06]:
        print NewL[0]

Но это совершенно неверно, так как случаи могут меняться там, где это не обязательно, всегда должно быть [05,06], так как оно может также получать значение для [03,04] и [01,02]. Я довольно новичок в использовании enumerate, поэтому буду признателен за любую помощь в этом.

0
Maxxx 24 Апр 2017 в 12:22

2 ответа

Лучший ответ

Цикл for должен выглядеть так:

for val in NewL:
    if val[1] == [5,6]:
            print val[0]

Он напечатает 1.3

0
Tiny.D 24 Апр 2017 в 09:34

Я не уверен, что понимаю вопрос, поэтому я экстраполирую то, что вам нужно:

Учитывая ваши 2 начальных списка:

L = [[01,02],[03,04],[05,06]]
OutputList = [1.1,1.2,1.3]

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

NewL = list(zip(OutputList, L))

Затем, учитывая 1 элемент из L, если вы хотите получить значение из OutputList:

val = [x for x, y in NewL if y == [05,06]][0]

Но было бы намного проще сделать это:

val = OutputList[L.index([05,06])]

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

0
Guillaume 24 Апр 2017 в 09:44
43584280