顺序搜索2列表

时间:2015-08-18 21:28:52

标签: python-3.x search linear-search

因此,对于家庭作业,我们被要求编写一个函数,该函数将2个列表作为输入,并使用顺序/线性搜索来完成它们,如果两个列表中都出现任何名称,则将该名称附加到新列表中。对于实际赋值,两个类被指定为VoterList和VoterName,因此不允许我们使用'in',并且只有VoterNames可以附加到VoterList。 (这项任务将发展为寻找在两个不同投票站投票两次的人选。)

所以我编写了一个函数,当我传入3-4个人的长列表时似乎有效,但我不确定它实际上是一个顺序搜索工作应该如何。一些建议会很棒。干杯

def fraud_detect_seq(first_booth_voters, second_booth_voters):
    fraud = []    

    length_first = len(first_booth_voters)
    length_second = len(second_booth_voters)

    first_booth_position = 0
    second_booth_position = 0


    while first_booth_position < length_first:
        name_comparison = first_booth_voters[first_booth_position]

        if second_booth_position == length_second:
            first_booth_position += 1
            second_booth_position = 0

        elif second_booth_voters[second_booth_position] == name_comparison:
            fraud.append(second_booth_voters[second_booth_position])
            first_booth_position += 1
            second_booth_position += 1

        elif second_booth_voters[second_booth_position] != name_comparison:
            second_booth_position += 1


    print(fraud)

fraud_detect_seq(['Jackson', 'Dylan', 'Alice'],['Jackson', 'ylan', 'Alice'])

获取输出:

['Jackson', 'Alice']

哪个是对的。但我觉得我做得不对。

1 个答案:

答案 0 :(得分:0)

def fraud_detect_seq(first_booth_voters, second_booth_voters):
    fraud = []

    for voter in first_booth_voters:
        if voter in second_booth_voters:
           fraud.append(voter)

这是检查它们是否在两个列表中的一种非常简单的方法。编写程序没有错误的方法,但由于你使用的是python,你可能也是最好的&#34; pythonic&#34;。 for循环在python中非常有用,用于检查列表中的成员资格。