按第三个列表python的值显示两个列表的元素



目标:迭代lst1和lst2,只显示lst_msk值等于1的值。lst_msk为0的索引处的lst1和lst2的所有值都应忽略

示例:

lst1 = [1,2,3,4,5]
lst2 = [1,2,3,4,5]
lst_msk = [1,1,1,0,0]

我的方法:

for i in lst1:
for j in lst2:
# couldn't figure out the remaining part yet

期望输出:

1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3

您可以将zip用于该任务,如下所示:

lst1 = [1,2,3,4,5]
lst2 = [1,2,3,4,5]
lst_msk = [1,1,1,0,0]
for l1, l2, lm in zip(lst1,lst2,lst_msk):
if lm == 1:
print(l1,l2)

输出

1 1
2 2
3 3

当您需要处理相等长度的列表中的相应元素时,zip非常方便。

这里有一个简单的解决方案:

lst1 = [1,2,3,4,5]
lst2 = [1,2,3,4,5]
lst_msk = [1,1,1,0,0]
for index, item in enumerate(lst_msk):
if item == 1:
print(lst1[index], lst2[index])

您可以使用zip来迭代"平行的";列表:

for v1, v2, msk in zip(lst1, lst2, lst_mask):
.. 

(如果要同时迭代所有列表(或

for v1, msk1 in zip(lst1, lst_mask):
for v2, msk2 in zip(lst2, lst_mask):
...

(如果所有的CCD_ 2和CCD_。

不需要创建二次循环。这样的解决方案如您所愿:

lst1 = [1,2,3,4,5]
lst2 = [1,2,3,4,5]
lst_msk = [1,1,1,0,0]
for i in range(len(lst1)):
if lst_msk[i] == 1:
print(lst1[i], lst2[i])

输出:

1 1
2 2
3 3

您可以使用列表压缩和zipzip返回i-(lst1(、j-(lst2(、k-(lst_msk(值,您可以使用if进行过滤。但在这种情况下,您应该了解特定的zip功能:

print(*[f"{i} {j}" for i,j,k in zip(lst1,lst2, lst_msk) if k != 0], sep="n")

输出:

1 1
2 2
3 3

最新更新