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']