我想在索引为1时将l1附加到l2

时间:2019-05-17 11:45:33

标签: python list

我正在尝试通过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 个答案:

答案 0 :(得分:2)

这可以做到:

[[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)

答案 1 :(得分:0)

要获得所需的输出,可以使用以下代码:

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]

答案 2 :(得分:0)

这是使用numpy的另一种方式,以防万一,您需要计算大型列表:

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

输出

[[], ['b'], ['a'], ['a', 'b']]

答案 3 :(得分:0)

Topic1

输出

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)