【问题标题】:Searching through a list with given elements搜索具有给定元素的列表
【发布时间】:2022-01-13 12:10:33
【问题描述】:

我正在尝试创建一个接受两个整数列表的函数,其中第二个列表是第一个列表的子集,然后返回一个零和一的列表,这样 K[i] = 1 if L[ i] 在列表 M 中找到。

这是我目前创建的代码:

def doSomething(L,M):
    K=[]
    x=0
    for i in range(len(L)):
        if L[i]==M[x]:
            K.append(1)
            x=x+1
        else:
            K.append(0)
    return K
L=[2,17,12,5,66,20,7]
M=[2,12,66]
print(doSomething(L,M))

我期望的输出是 [1, 0, 1, 0, 1, 0, 0] 但是我在第 5 行代码中遇到错误:“IndexError: list index out of range”

任何帮助将不胜感激。

【问题讨论】:

    标签: python list function search


    【解决方案1】:

    第5行的错误是由于列表M的长度小于L的长度。

    如果您仍然不习惯按照 Ilia 的建议使用列表推导,您可以使用以下代码(更新后的 doSomething):

    def doSomething(L,M):
        K=[]
        for i in range(len(L)):
            if L[i] in M:
                K.append(1)
            else:
                K.append(0)
    
        return K
    

    【讨论】:

      【解决方案2】:

      这应该可行:

      K = [1 if x in M else 0 for x in L]
      

      或者作为一个函数:

      def doSomething(L, M):
          return [1 if x in M else 0 for x in L]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2018-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-18
        • 1970-01-01
        相关资源
        最近更新 更多