我对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)