Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回值:none-Python_Python_Python 3.x - Fatal编程技术网

返回值:none-Python

返回值: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

我想写一个函数,它接受三个整数列表,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 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
,因为我们想要的是tuple
tuple
本身,而不是其中的项目。此外,我还将名称
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中,您可以通过单击“检查”图标接受一个您认为最有帮助的答案,该图标位于“答案”帖子的“向上投票”和“向下投票”部分下方。