返回值:none-Python
我想写一个函数,它接受三个整数列表,l1、l2和l3,并返回 所有元组的列表,其中每个元组(a、b、c)都是a来自l1,b来自l1 来自l2,c来自l3,a+b=c 预期产出:返回值:none-Python,python,python-3.x,Python,Python 3.x,我想写一个函数,它接受三个整数列表,l1、l2和l3,并返回 所有元组的列表,其中每个元组(a、b、c)都是a来自l1,b来自l1 来自l2,c来自l3,a+b=c 预期产出: [(2,5,7), (3,4,7), (3,5,8)] 我得到的结果是: None 以下是我编写的代码: def threeList(l1, l2, l3): result = [] for num in list3: for x in list1: for y in list
[(2,5,7), (3,4,7), (3,5,8)]
我得到的结果是:
None
以下是我编写的代码:
def threeList(l1, l2, l3):
result = []
for num in list3:
for x in list1:
for y in list2:
if x + y == num:
tuples = (x,y,num)
list_of_tuples = result.extend(tuples)
return list_of_tuples
list1 = [1,2,3]
list2 = [4,5]
list3 = [7,8]
threeList(list1, list2, list3)
“扩展”修改对象本身。它不返回任何内容
result.extend(tuples)
return result
还要注意的是,您的代码段不起作用。所以很难发现你的确切问题
- 你打字打错了吗
- 缩进错误
- 等
extend
是一种就地方法,返回None
将代码更改为:
def threeList(l1, l2, l3):
result = []
for num in l3:
for x in l1:
for y in l2:
if x + y == num:
tuples = (x, y, num)
result.append(tuples)
return result
list1 = [1, 2, 3]
list2 = [4, 5]
list3 = [7, 8]
print(threeList(list1, list2, list3))
输出:
[(2,5,7)、(3,4,7)、(3,5,8)]
说明:
我使用了append
而不是extend
,因为我们想要的是tupletuple
本身,而不是其中的项目。此外,我还将名称list3
,list1
,list2
分别替换为l3
,l1
,l2
,因为这些是传递给函数的实际值,如果您的代码现在可以工作,是因为list1
,list2
,list3
存在于函数外部,在函数内部引用。循环结束后,我返回结果
,这是一个元组列表
这是为了修复您的解决方案,但更好的替代解决方案是在您的情况下使用itertools模块,如product
。尝试以下方法:
import itertools as it
list1 = [1,2,3]
list2 = [4,5]
list3 = [7,8]
[(x,y,x+y) for x,y in it.product(list1,list2) if x+y in list3]
返回:
> [(2, 5, 7), (3, 4, 7), (3, 5, 8)]
是嵌套
循环的干净替代品。extend
返回None
,这就是您要返回的。您可能也不希望在循环内返回
,但在所有循环之后。extend
是一种就地方法,返回None
。如何解决此问题?不,我的code@NisaAslan:您的代码至少有两处错误。非常感谢您的解释@NisaAslan很乐意为您提供帮助,在stackoverflow中,您可以通过单击“检查”图标接受一个您认为最有帮助的答案,该图标位于“答案”帖子的“向上投票”和“向下投票”部分下方。