麻烦函数定义

时间:2019-04-25 04:53:58

标签: python-3.x

“问题:编写一个给定两个列表的函数,返回第一个列表中未出现在第二个列表中的所有元素的列表。您的主程序将允许用户输入两个数字列表并结束输入列表1的空白行。”

我在解决问题时遇到了一些麻烦,我正在运行驱动程序代码,但似乎无法创建与我的程序一起使用的有效函数定义。任何可以启动的想法都会得到帮助。

这是我尝试过的众多尝试之一。

def uncommon_elements(list1, list2):

    new_list = list()
    for element in list1:
        if element not in list2:
            new_list.append(element)
    return new_list

while(True):

    list1 = input("List 1: ")
    if list1 == '': break
    list2 = input("List 2: ")
    if list2 == '': break

    new_list = list()
    for i in list1:
        if i not in list2:
            new_list.append(i)

    for j in list2:
        if j not in list1:
            new_list.append(j)
    print(common_elements(list1,list2))

预期的I / o

List 1: 1 3 4 2 1 2 1 3

List 2: 1 1 3

[4, 2, 2]

List 1:

Process finished

My current i/o

List 1: 1 3 4 2 1 2 1 3

List 2: 1 1 3

['4', '2', '2']

List 1: 

Process finished

1 个答案:

答案 0 :(得分:1)

您的代码几乎可以正常工作,您只需要将字符串拆分为整数列表,然后将其传递给函数即可。

def uncommon_elements(list1, list2):

    new_list = list()
    for element in list1:
        if element not in list2:
            new_list.append(element)
    return new_list

while(True):

    list1 = input("List 1: ")
    if list1 == '': break
    list2 = input("List 2: ")
    if list2 == '': break

    #Create list of integers out of the string
    new_list1 = [int(item) for item in list1.split(' ') if item.strip() != '']
    new_list2 = [int(item) for item in list2.split(' ') if item.strip() != '']
    print(uncommon_elements(new_list1,new_list2))

输出看起来像

List 1: 1 3 4 2 1 2 1 3
List 2: 1 1 3
[4, 2, 2]
List 1: 1 3 4 2 1 2 1 3
List 2: 1 1 3
[4, 2, 2]
List 1: 1 3 4 2 1 2 1 3
List 2: 1
[3, 4, 2, 2, 3]
List 1: 

您还可以像这样使用列表推导来编写uncommon_elements函数。

def uncommon_elements(list1, list2):

    return [item for item in list1 if item not in list2]