【问题标题】:How to slice a list based on boolean indices [duplicate]如何根据布尔索引对列表进行切片[重复]
【发布时间】:2021-01-19 02:20:51
【问题描述】:

例如:

listA = ["a", "b", "c", "d"]
listB = [True, False, True, False]

如何提取listATrue中的元素,比如listA(listB),得到["a", "c"]?最好有一行代码来实现。

【问题讨论】:

  • 请添加预期输出
  • [a for i,a in enumerate(listA) if listB[i]]
  • @PatrickArtner 为什么在zip 存在的情况下使用enumerate
  • [a for a,b in zip(listA,listB) if b] 有很多方法可以到达你想要的地方:) @khelwood - 你是对的,这更好
  • 实际上,itertools 中有compress() 可以满足您的需求。 list(compress(listA, listB))

标签: python


【解决方案1】:
ListA = ["a", "b", "c", "d"]
ListB = [True, False, True, False]
ListC = []
for X in range(len(ListA)):
    if ListB[X] == True:
        ListC.append(ListA[X])
print(ListC)

如果列表 B 为真,则循环遍历列表 A 并附加到列表 C

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 2018-09-26
    • 2020-02-27
    相关资源
    最近更新 更多