Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
从python for循环函数返回值_Python - Fatal编程技术网

从python for循环函数返回值

从python for循环函数返回值,python,Python,我已经编辑了我的问题。代码包含一个is_素数公式,它指示一个数字是否为素数>我试图提取3到65范围内的所有素数值 a = [] b = [] c = [] d = [] def ll_prime(n_start, n_end): for number in range(n_start, n_end):

我已经编辑了我的问题。代码包含一个is_素数公式,它指示一个数字是否为素数>我试图提取3到65范围内的所有素数值

a = []
b = []                                             
c = []                                             
d = []
def ll_prime(n_start, n_end):  
    for number in range(n_start, n_end):
        if is_prime(number) ==True:
            a.append(number)
            b.append(1)
        else:
            c.append(number)
            d.append(0)
    return (list(zip(a,b)))
上面的代码运行正常,但当我调用函数ll_prime(3,65)时,它给出了以下错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-498-1a1a58988fa7> in <module>()
----> 1 ll_prime(3,65)
      2 #type(tyl)
      3 #list_values = [ v for v in tyl.values()]

<ipython-input-497-d99272d4b655> in ll_prime(n_start, n_end)
     11             c.append(number)
     12             d.append(0)
---> 13     return (list(zip(a,b)))

TypeError: 'list' object is not callable
TypeError回溯(最近一次调用)
在()
---->1素数(3,65)
2型(tyl)
3#列出_值=[v表示类型中的v.values()]
在ll_素数中(n_开始,n_结束)
11 c.追加(数字)
12 d.1(0)
--->13返回(列表(邮政编码(a、b)))
TypeError:“列表”对象不可调用
有人能告诉我为什么我会犯这个错误吗?我已经搜索了上一个关于stackoverflow的问题,但没有一个对我的案例有帮助

我希望结果为:[(3,1),(5,1),(7,1)]等您可以从
itertools
使用,并将其与您的列表一起压缩

>>> from itertools import repeat
>>> mb = [3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61]
>>> zip(mb, repeat(1))
[(3, 1), (5, 1), (7, 1), (11, 1), (13, 1), (17, 1), (19, 1), (23, 1), (29, 1), (31, 1), (37, 1), (41, 1), (43, 1), (47, 1), (53, 1), (59, 1), (61, 1)]
或者您可以使用如下列表:

>>> [(x, 1) for x in mb]
[(3, 1), (5, 1), (7, 1), (11, 1), (13, 1), (17, 1), (19, 1), (23, 1), (29, 1), (31, 1), (37, 1), (41, 1), (43, 1), (47, 1), (53, 1), (59, 1), (61, 1)]


到您的解决方案:在您的解决方案中,您将在第一次循环迭代后返回结果。所以它还没有正确的值。尝试将返回移动到循环之外。

您可以使用列表:

def l1_prime():
返回[(i,1)以mb表示的i]

一个问题是,您的
return
命令位于for循环内,因此它只执行一次。这可能就是为什么你没有得到你想要的。当我运行代码时,它返回(3,1),这只是第一组项。如果它只在for循环中运行一次,然后返回,那么这是有意义的。试试这个:

 mb = [3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61]
list1 = []
list2 = []                                             
def prime():
    for i in mb:
        list1.append(i)
        list2.append(1)
        print(str(len(list1)))
        print(str(len(list2)))
    return (list(zip(list1,list2)))

当我运行它时,我得到了正确的答案

如果要返回第一次迭代的值,请将return语句移到脚本中loopNameError之外。除非你想帮你修好。请提供复制您的问题的正确答案。感谢可能的副本