Python追加列表,未添加任何内容

2024-06-16 11:05:10 发布

您现在位置:Python中文网/ 问答频道 /正文

当我练习python的一些问题时,有些东西我不明白 下面是我的代码

def solution(participant, completion):
    answer = []
    participant.sort()
    completion.sort()
    for i in range(len(completion)):
                   if participant[i]!=completion[i]:
                       answer.append(participant.pop(i))
                       return answer
    return answer


solution(["leo", "kiki", "eden"],["eden", "kiki"])
solution(["marina", "josipa", "nikola", "vinko", "filipa"], ["josipa", "filipa", "marina", "nikola"])

我得从第一份名单中找出不在第二份名单中的名字。 很明显,我得用“leo”作为第一个词,用“vinko”作为第二个词。你知道吗

然而,每当我试图从participant附加元素时,它什么也没有添加 为什么会发生这种情况,你怎么解决它??你知道吗


Tags: answerreturnsortcompletionnikolasolutioneden名单
3条回答

首先,您不需要使用任何类型的排序,除非您当然希望结果按顺序排列。你知道吗

其次,有一种很好的方法可以使用“notin”检查元素是否不在列表中

希望这有帮助:)

def solution(participant, completion):
    answer = []
    for p in participant:
        if(p not in completion):
            answer.append(p)

    print(answer)    
    return(answer)

存在重复名称时包含的解决方案。根据以下评论的要求:

def solution(participant, completion):
    answer = []
    for p in participant:
        if(p not in completion or participant.count(p) > completion.count(p)):
            if(p not in answer):
                answer.append(p)

    print(answer)    
    return(answer)

因此,在上面我检查了每个列表中元素出现次数之间的计数差异,如果第一个列表大于第二个列表,那么它们一定比第一个列表中的元素多。另外,我要确保不会将重复项添加到结果列表中(不确定是否需要这样做)

您没有得到输出,因为您只对循环进行了2次迭代,因为完成列表的长度仅为2,并且您正在对分区和完成列表进行排序,所以前两个元素是相同的。因此它不会在if块中执行代码。 对于第二个调用也是一样,它只会迭代循环4次。你知道吗

使用set可以用最少的代码实现预期的结果。参考Tomothy32提供的解决方案

为什么不尝试在python中使用散列集来做一些更简单的事情呢。你知道吗

def solution(participant, completion):
    answer = []
    completion_set = set(completion)

    for p in participant:
        if p not in completion_set:
            answer.append(p)
    return answer


print(solution(["leo", "kiki", "eden"],["eden", "kiki"]))

也可以通过普通列表来实现。你知道吗

相关问题 更多 >