Python问题:构建从列表中检索元素的函数的应用问题

2024-03-29 04:51:30 发布

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

问题: 有一场马拉松比赛,你们有一份参赛者名单。(例如:[“杰克”、“迈克”、“约翰”) 参与者人数为1到100000之间的随机整数。 您还有完成马拉松的参与者列表。完成的参与者人数比参与者总数少1人。 可能有同名的参与者。 你必须建立一个函数来打印没有完成马拉松比赛的参与者

我的尝试:

def solution(participant, completion):
    for i in completion:
        if i in participant:
            participant.remove(i)
    answer = print ('"' + str(*participant) + '"')
    return(answer)

例如,如果参与者=[“john”,“mike”],完成=[“john”], 预期的答案是“迈克” 我认为我尝试的代码没有问题。 如果有,你们能指出我错过的部分吗? 最重要的是,是否有一种更优雅的方式来构建此功能


Tags: 函数answerin列表def整数john参与者
2条回答
    for i in completion:
        if i in participant:
            participant.pop(i)
    answer = print ('"' + str(*participant) + '"')
    return(answer)

两个可能的改进:第一,如果总是只有一个参与者没有完成

def solution(participant, completion):
    for p in participant:
        if p not in completion:
            print( p )
            return p

第二,如果n名参与者未完成:

def solution(participant, completion):
    answer = []
    for p in participant:
        if p not in completion:
            print( p )
            answer.add(append)
    
    #print( answer ) # if needed
    return answer

如果使用集合,则可以简单地跟踪它们

def short(participant, completion):
    return set(participant) - set(completion)

见:

一个小提示: 也是你的 answer = print ('"' + str(*participant) + '"')只适用于Python3,Python2会引发一个语法错误,因为print不会返回任何内容(Python3中没有的内容)

相关问题 更多 >