Я хочу добавить в l1 к l2, когда индекс равен 1 - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь получить вывод с помощью цикла for

l1 = ["a", "b"]
l2 = [[0, 0], [0, 1], [1, 0], [1, 1]]
list1 = []

for i in range(len(l2)):
    for j in range(len(l2[i])):
        if l2[i][j] == 1:
            list1.append(l1[j])

Я хочу получить вывод

[[], ["b"], ["a"], ["a", "b"]

Ответы [ 4 ]

2 голосов
/ 17 мая 2019

Это будет сделано:

[[l1[i] for i, y in enumerate(x) if y] for x in l2]

Или в цикле for:

result = []

for x in l2:
    part = []
    for i, y in enumerate(x):
        if y:
            part.append(l1[i])
    result.append(part)
0 голосов
/ 17 мая 2019
l1 = ["a", "b"]
l2 = [[0, 0], [0, 1], [1, 0], [1, 1]]
list1 = []

for i in l2:
    tm=[]
    if i[0]==1:
        tm.append(l1[0])
    if i[1]==1:
        tm.append(l1[1])
    list1.append(tm)


print(list1)

выход

 [[], ['b'], ['a'], ['a', 'b']]
0 голосов
/ 17 мая 2019

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

import numpy as np
l3 = [list(l1[np.array(k)]) for k in l2]

Выход :

[[], ['b'], ['a'], ['a', 'b']]
0 голосов
/ 17 мая 2019

Для получения желаемого результата вы можете использовать следующий код:

l1 = ["a", "b"]
l2 = [[0, 0], [0, 1], [1, 0], [1, 1]]
output = [[l1[j] for j in range(0,len(l1)) if i[j] == 1] for i in l2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...