Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 试图从列表中一次返回一个项目_Python_Python 3.x_List_Function - Fatal编程技术网

Python 试图从列表中一次返回一个项目

Python 试图从列表中一次返回一个项目,python,python-3.x,list,function,Python,Python 3.x,List,Function,所以我尝试制作一个应用程序,用不同的名字打印同一个句子,所以使用一个函数我想返回名字(在另一个函数中使用它们),它总是只返回名字和结尾。我尝试用很多方法解决这个问题,但找不到任何人能帮助的解决方案 def next_person(list): i = 0 while i < len(list): if i < len(list): return list[i] i += 1 names = ("nik

所以我尝试制作一个应用程序,用不同的名字打印同一个句子,所以使用一个函数我想返回名字(在另一个函数中使用它们),它总是只返回名字和结尾。我尝试用很多方法解决这个问题,但找不到任何人能帮助的解决方案

def next_person(list):
    i = 0
    while i < len(list):
        if i < len(list):
            return list[i]
        i += 1

names = ("nike", "dan", "someone", "elzein", "joe")

print(next_person(names))
定义下一个人(列表): i=0 而我我强烈建议使用for循环:

def next_person(list):
        for a in list:
                print("This is my sentence : {}".format(a))

names = ["nike", "dan", "someone", "elzein", "joe"]

next_person(names)

Output :
This is my sentence : nike
This is my sentence : dan
This is my sentence : someone
This is my sentence : elzein
This is my sentence : joe

通过调用return,您将结束函数 如果你想让你的函数按照你说的去做,它就必须被写成

def next_person(list):
    i = 0
    while i < len(list):
        if i < len(list):
            print(list[i])
        i += 1

names = ("nike", "dan", "someone", "elzein", "joe")

next_person(names)
定义下一个人(列表): i=0 而我 如果你想返回生成的句子

def next_person(list):
    i = 0
    sentences = []
    while i < len(list):
        if i < len(list):
           sentences.append(list[i])
        i += 1
    return(sentences)

names = ("nike", "dan", "someone", "elzein", "joe")

mySentences = next_person(names)
print(mySentences)

Output :
["nike", "dan", "someone", "elzein", "joe"]

定义下一个人(列表): i=0 句子=[] 而我当然有更简单的方法,但如果您需要一次返回一个项目,您需要的就是它

您可以使用map打印值和调用列表

定义下一个人(列表): i=0 而我您根本不需要该功能<代码>列表支持python迭代器协议。无需将其封装在尝试执行相同操作的内容中。

当您返回
时,
,函数完成,任何状态(包括
i
的当前值)都将被删除。在本例中,您似乎只是在重新实现标准列表迭代协议,例如,该程序可以对名称中的名称执行
。不清楚您为什么需要函数。为什么不只是:
对于names:print(f“句子:{n}”)
?从您的示例中不清楚您计划如何使用此函数。你想在for循环中多次调用它吗?我认为真正的问题是根本不应该有
next\u person
函数。OP似乎只是试图重新创建python现有的迭代协议。我们需要看一个更大的例子OP想做什么来回答。好吧,但是如果我想在另一个函数中使用这个函数的输出,怎么解决呢?如果你想使用输出,而不是打印。您应该创建一个空列表,并将结果附加到列表中。然后您将得到一个包含输出的列表。但是,我也不知道您想要实现什么。好吧,但是如果我想在另一个函数中使用此函数的输出,该如何解决?您可以在函数的开头创建一个列表变量,将答案附加到它,然后在函数的末尾返回列表,但是
list(map(print,names))
做同样的事情。没有理由构建一个生成器来迭代已经可以迭代的东西。@t就像我说的,有更简单的方法可以做到,你可以用一行
print(*(“nike”、“dan”、“someone”、“elzein”、“joe”),sep='\n')
不仅仅是有更简单的方法可以做到,根本不应该这样做。OP似乎对列表的工作方式有一个根本性的误解。这是我们应该关注的。
def next_person(list):
    i = 0
    while i < len(list):
        if i < len(list):
             yield list[i]
        i += 1

names = ("nike", "dan", "someone", "elzein", "joe")

list(map(print, next_person(names)))