Python 不同大小的列表比较

Python 不同大小的列表比较,python,Python,我有两张单子 list1=['a','b','c','d'] list2=['c','d'] 我必须比较这个list1和list2 如果list1和list2相同,我不应该删除任何项目,我必须保持list1不变。例如list1=[a,c],list2=[a,c]然后list1=[a,c] 如果list1的元素多于list2,我应该从list1中删除额外的元素(如示例所示),这里我需要list1=['c'] 如果list1=['c']那么我应该保持list1的原样,即list1=['c'] 我该

我有两张单子

list1=['a','b','c','d']
list2=['c','d']
我必须比较这个
list1
list2

  • 如果
    list1
    list2
    相同,我不应该删除任何项目,我必须保持
    list1
    不变。例如
    list1=[a,c],list2=[a,c]
    然后
    list1=[a,c]

  • 如果
    list1
    的元素多于
    list2
    ,我应该从
    list1
    中删除额外的元素(如示例所示),这里我需要
    list1=['c']

  • 如果
    list1=['c']
    那么我应该保持
    list1
    的原样,即
    list1=['c']

  • 我该怎么做?我试过:

    def is_equal(list1, list2):
        "Check both lists are same or not"
        return sorted(list1) == sorted(list2)
    
    我得到了这个错误,我不是一直都得到它:

        return sorted(interviewers_name_list) == sorted(interviewers_list)
    TypeError: '<' not supported between instances of 'str' and 'NoneType'
    
    返回排序(面试官姓名列表)==排序(面试官列表)
    
    TypeError:“我假设您的
    列表将只包含唯一元素,或者您只对唯一元素感兴趣

    如果是这样,您可能应该使用。 在这里,您描述的操作是
    .intersection()


    当然,如果您从
    列表开始
    ,您可以通过以下方式将其转换为
    set()

    a = set([1, 2, 3, 4])
    print(a)
    # {1, 2, 3, 4}
    


    另外,请注意,
    set
    s没有定义的顺序,因此您可能需要对它们使用
    sorted()
    (这将
    set
    转换为排序的
    列表
    )。

    列表理解可能是您需要的。下面是一个可能对您有所帮助的实现

    list1=['a','b','c','d']
    list2=['a','c']
    
    if sorted(list1)==sorted(list2):
        print(list1)
    else:
        print([elem for elem in list1 if elem in list2 ])
    
    这将返回输出

    ['a','c']
    
    如果两个列表相同,它只返回list1


    希望这有帮助

    这是我从您的解释中理解的,如果两个列表相等,那么它什么也不做,只返回列表1;另一方面,如果列表中的元素不相同,那么它会从列表1中删除额外的元素,并使列表1与列表2相似

    list1=['a','b','c','d']
    list2=['a','c']
    def is_equal(list1, list2):
        "Check both lists are same or not"
        return sorted(list1) == sorted(list2)
    
    
    def compare_list(list1, list2):
        if is_equal(list1, list2):
            return list1
        else:
            return sorted((set(list1) & set(list2)))
    
    print(compare_list(list1, list2))
    
    输出:

    ['a', 'c']
    

    你能解释一下你的情况吗(ii)你在1-3中描述的意思是你可以一直使用列表2?!在案例(ii)中,例如list1=['a'、'b'、'c'、'd']和list2=['a'、'c']在比较之后,我需要list1=['a'、'c'],因为“b”和“d”不在列表2中是的,我将使用list1和list2进行比较。如果两者相等,则保持列表1不变。如果列表1的元素多于列表2,请删除列表2中不存在的元素。
    ['a', 'c']