无法使用这些python列表打印所需的输出

无法使用这些python列表打印所需的输出,python,Python,我希望我的源代码输出如下: Lists: 1 3 4 2 1 2 1 3; 4 4 2 4 3 2 4 4 3 1 3 [2, 3] Lists : 1 1 2 3 4 5; 2 3 4 5 6 [] Lists : ; [] Lists: 我想写一个函数,它接受两个列表并返回两个列表中多次出现的所有元素,但最终我在这些列表中找到了公共元素。我的退货清单应该按升序排列,没有重复项 def occur_multiple(a, b): a_set = set(a

我希望我的源代码输出如下:

Lists: 1 3 4 2 1 2 1 3; 4 4 2 4 3 2 4 4 3 1 3    
[2, 3]

Lists : 1 1 2 3 4 5; 2 3 4 5 6    
[]

Lists : ;   
[]

Lists:
我想写一个函数,它接受两个列表并返回两个列表中多次出现的所有元素,但最终我在这些列表中找到了公共元素。我的退货清单应该按升序排列,没有重复项

def occur_multiple(a, b):
    a_set = set(a)
    b_set = set(b)
    # check length  
    if len(a_set.intersection(b_set)) > 0:
       return (a_set.intersection(b_set))
    else:
       return ("no common elements")

while True:
    original_string = input("Lists: ")
    if not original_string:
        exit()
    first_split = original_string.split(';')
    first_list, second_list = [elem.split(' ') for elem in first_split]
    first_list.sort()
    second_list.sort()
    print(occur_multiple(first_list, second_list))

list的count函数可能对您的任务有帮助。我已经修改了您的代码,以便它通过交叉点集中的元素并检查两个列表中的计数是否都大于1

def occur_multiple(a, b):    
    a_set = set(a)    
    b_set = set(b)
    # check length
    ans_set = set()
    c = a_set.intersection(b_set)
    if len(c) > 0:
        for i in c:
            if a.count(i) > 1 and b.count(i) > 1:
                ans_set.add(i)
        return (sorted(list(ans_set)))
    else:
        return ("no common elements")

此外,您可能希望将列表输入更改为int。为了改进,您可能希望在字典中存储每个元素的计数,而不是多次读取列表。

列表的计数函数可能对您的任务有所帮助。我已经修改了您的代码,以便它通过交叉点集中的元素并检查两个列表中的计数是否都大于1

def occur_multiple(a, b):    
    a_set = set(a)    
    b_set = set(b)
    # check length
    ans_set = set()
    c = a_set.intersection(b_set)
    if len(c) > 0:
        for i in c:
            if a.count(i) > 1 and b.count(i) > 1:
                ans_set.add(i)
        return (sorted(list(ans_set)))
    else:
        return ("no common elements")

此外,您可能希望将列表输入更改为int。为了改进,您可能希望在字典中存储每个元素的计数,而不是多次读取列表。

使用NumPy函数
np.unique
np.intersect1d

将numpy导入为np
定义我的乐趣(a,b):
val_1,count_1=np.unique(a,return_counts=True)#查找唯一元素并
val_2,count_2=np.unique(b,return_counts=True)#出现次数
val_1=val_1[计数_1>1]#保留发生的元素
val_2=val_2[计数_2>1]#不止一次
结果=np.intersect1d(val_1,val_2)#集合交点
返回列表(结果)#转换为列表
a=[1,3,4,2,1,2,1,3] >>>b=[4,4,2,4,3,2,4,4,3,1,3] >>>c=我的乐趣(a,b) >>>印刷品(c) [2, 3] a=[1,1,2,3,4,5] >>>b=[2,3,4,5,6] >>>c=我的乐趣(a,b) >>>印刷品(c) [] a=[-5,1,2,3,4,1,0,1,2,4,4,2,5] >>>b=[1,3,4,5,-5,-5,1,4] >>>c=我的乐趣(a,b) >>>印刷品(c) [-5, 1, 4]
使用NumPy函数
np.unique
np.intersect1d

将numpy导入为np
定义我的乐趣(a,b):
val_1,count_1=np.unique(a,return_counts=True)#查找唯一元素并
val_2,count_2=np.unique(b,return_counts=True)#出现次数
val_1=val_1[计数_1>1]#保留发生的元素
val_2=val_2[计数_2>1]#不止一次
结果=np.intersect1d(val_1,val_2)#集合交点
返回列表(结果)#转换为列表
a=[1,3,4,2,1,2,1,3] >>>b=[4,4,2,4,3,2,4,4,3,1,3] >>>c=我的乐趣(a,b) >>>印刷品(c) [2, 3] a=[1,1,2,3,4,5] >>>b=[2,3,4,5,6] >>>c=我的乐趣(a,b) >>>印刷品(c) [] a=[-5,1,2,3,4,1,0,1,2,4,4,2,5] >>>b=[1,3,4,5,-5,-5,1,4] >>>c=我的乐趣(a,b) >>>印刷品(c) [-5, 1, 4]
附加问题预期结果。使用
set()。使用
set()