使用另一个过程的 Python 过程返回 none



我对python很陌生,我正在做一个在线课程来学习基础知识。虽然一切进展顺利,但仍然有一些东西我似乎没有掌握在python中。

即使我找到了一种更简单的方法来解决波纹管问题,我仍然想了解为什么我的程序返回"None"..我的 if 语句有误吗?语法错误?

问题是这样的:

定义一个过程,联合,将两个列表作为输入。它应该将第一个输入列表修改为两个列表的集合并集。您可以假设第一个列表是一个集合,也就是说,它不包含重复的元素。

我们期待的结果:

a = [1,2,3]
b = [2,4,6]
union(a,b)
print a 
#>>> [1,2,3,4,6]

您会注意到,在我的过程中,我正在使用另一个过程来查找列表项是否在另一个列表中。问题可能出在那个吗?

这是我的代码:

def find_element(a,b):
    if b in a:
        return a.index(b)
    return - 1

 def union(a,b):
        i = 0
        while i < len(b) - 1:
            c = find_element(a,b[i])
            if c != -1:
                i = i + 1 
            if c == -1:
                a = a.append(b[i])
                i = i + 1 
        return a
    a = [1,2,3]
    b = [2,4,6]
    print(union(a,b))       
a = a.append(b[i])

在这里,a.append(b[i]) 将 b[i] 附加到 a 并返回您分配给 'a' 的 'none'。

将其更改为

a.append(b[i])

你至少应该得到一个输出。

以防万一您可能需要它。如果你有这样的代码,你的代码可能会更容易阅读。但挑战自己是件好事。最好

def union(a, b):
    for item in b:
         if item not in a:
             a.append(item)
    return a
a = [1, 2, 3]
b = [2, 4, 6]
x = union(a, b)
print(x)

最新更新