创建一个列表,其中包含两个不同列表的相似值

时间:2015-06-14 19:59:49

标签: python python-3.x

我这样做的全部意义是学习如何在不使用给定的内置函数的情况下编写python代码,例如sort()max()min()。我需要创建一个函数,它将2个列表作为参数,并创建一个新的列表,其中填充了传递给函数的2个列表的相似值。如果list1= [1,2,2,3,4]list2 = [1,2,2,3,4]我的new_list应该= [1,2,3,4],则new_list不能重复。我的函数的问题是我使用函数in中内置的python来检查x中是否有new_list。如何在不使用python的内置函数的情况下扩展此函数以检查值是否已在new_list内?

def alike_values(list1, list2):
   new_list = []
   for i in list1:
       for x in list2:
           if i == x and x not in new_list:
              new_list.append(i)
   return new_list

3 个答案:

答案 0 :(得分:1)

您可以创建第二个函数,检查该值是否已包含在列表中:

def alike_values(list1, list2):
    new_list = []
    for i in list1:
        for x in list2:
            if i == x and not in_list(new_list, x):
                new_list.append(i)
    return new_list

def in_list(li, val):
    for i in li:
        if i == val:
            return True
    return False

答案 1 :(得分:1)

您可以在一行中实现此目的。只需使用基本的设置属性。这样做的代码如下。

combined_list = list(set(list1).intersection(list2))

答案 2 :(得分:0)

你可以在没有内置功能的情况下完成它,但我相信你无法订购它们。你能做的是:

    def alike_values(list1, list2):
        combined_list = sorted(list1 + list2)
        new_list = list(set(combined_list))
        return new_list