“问题:编写一个给定两个列表的函数,返回第一个列表中未出现在第二个列表中的所有元素的列表。您的主程序将允许用户输入两个数字列表并结束输入列表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
答案 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]