gpt4 book ai didi

python - 'return' 关键字只返回循环中的一个元素?

转载 作者:太空狗 更新时间:2023-10-30 02:12:40 24 4
gpt4 key购买 nike

我有一个简单的函数来读取 csv 文件并从中提取第一个 coloum:

import csv 

def pass_username():
with open('test.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
return row[0]

当我调用这个函数时:

a = pass_username()
print a

这只打印第一个元素。但是,当我将 return 替换为 print 作为 print row[0] 并将函数调用为 pass_username() 它打印所有元素。我想将该函数分配给一个变量,因此我想使用返回。如何解决?

test.csv 内容:

"test@gmail.com","rockon"
"hello@gmail.com","hey"
"hithere@gmail.com","ok"
"hellosir@gmail.com","password"

最佳答案

正如其他回答的人所说,您可以将结果累积到一个列表中并返回。不过,另一种方法是将 return 替换为 yield ,这会导致您的函数返回一个可迭代类型对象,该对象会在您决定稍后对其进行迭代时生成您产生的项目(可能带有 for 循环)。

参见:What does the "yield" keyword do in Python?

以下是您将如何在您的代码中使用它:

import csv 

def pass_username():
with open('test.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
yield row[0]

username_generator = pass_username()

# iterate through the usernames with a for loop
for name in username_generator:
print name
# call the list constructor which causes it to produce all of the names
print list(pass_username())

请记住,用户名是根据需要生成的,因此您可以执行 username_generator.next() 操作,这将生成下一个用户名,而无需必须生产所有这些。

关于python - 'return' 关键字只返回循环中的一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14132723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com