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
而我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
句子=[]
而我时,
,函数完成,任何状态(包括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)))