运行以下代码时:
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)