当返回一个word列表并在Python中打印它时,它只显示列表中第一个单词的字母



运行以下代码时:

def my_function(food):
for x in food:
return(x)
fruits = ["apple", "banana", "cherry"]
name=list(my_function(fruits))
print(name)

我只得到['a', 'p', 'p', 'l', 'e'],第一个单词的单个字母。我期待着整个名单…即使我在逻辑上运行了错误的代码,它也会返回最后一个单词。任何解释吗?我试图了解如何通过一个列表,并以更容易的方式返回相同的列表。使用相同的简单代码,如何返回相同的列表

如果我使用不带函数的常规for循环,我将得到整个列表单词:

food= ["apple", "banana", "cherry"] 
for x in food: 
print(x)

但是在函数中,当您使用相同的for循环时,它只返回第一个单词

我只得到['a', 'p', 'p', 'l', 'e'],第一个单词的单个字母

这是因为您返回的是第一次迭代,其中x是列表中的第一个元素。

逻辑上,它应该返回最后一个单词

。要实现这一点,您需要遍历整个列表,然后返回:

for x in food:
pass
return x

或者只返回food中的最后一个元素:return food[-1]

看起来你正在尝试做的可能是得到列表的副本。本例中使用list.copy()

return food.copy()

或者你试图在food上创建一个迭代器,在这种情况下,使用yield使函数成为生成器:

for x in food:
yield x

或者完全不循环

yield from food

或者为什么不像我在评论中所说的那样使用iter呢?

name = list(iter(fruits))

return关键字告诉Python立即返回函数的值。因此,my_function(fruits)返回单词"apple"

然后将传递给list()函数,该函数将字符串"apple"

转换为字符列表。在你的帖子中,你说你想返回相同的项目列表。你的意思是你想要一个列表的副本吗?如果是,使用food_copy = food.copy()

当您使用list时,您可以使用生成器生成每个项目,或者使用return food.copy()返回列表的副本

def my_function(food):
for x in food:
yield x

fruits = ["apple", "banana", "cherry"]
name = list(my_function(fruits))
print(name)

相关内容

  • 没有找到相关文章

最新更新