我正在尝试通过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"]
答案 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)