for循环函数即returns f-string
For loop function that returns f-string
我是 python 的新手,正在尝试编写一个接受字典列表的函数和 returns 一个新的字符串列表,每个字典中的名字和姓氏键连接在一起。
names = [{'first': 'John', 'last': 'Smith'}, {'first': 'Jessie', 'last': 'Snow'}]
def name_function(lst):
for name in lst:
return f"{name['first']} {name['last']}"
names_function(names)
'John Smith'
我写了一个遍历字典列表的 for 循环和 returns 一个连接每个字典中名字和姓氏键的 f 字符串,但是,循环无法迭代第一个键和我希望有人能指出我的问题。
如果要获取所有名称:
def names_function(lst):
ret=""
for name in lst:
ret += f"{name['first']} {name['last']}\n"
return ret
或
def names_function(lst):
return [f"{name['first']} {name['last']}" for name in lst]
如果你想创建一个生成器对象:
def names_function(lst):
return (f"{name['first']} {name['last']}" for name in lst)
虽然你有一个循环,但你在循环中也有一个 return
。在列表的第一次迭代中,此 return
将被命中并且函数的执行将停在那里,仅返回该行上的值 - 这是一个字符串 - 而不是预期的列表。
您需要在函数中添加一个列表以在返回之前用作累加器 —
def names_function(lst):
names = []
for name in lst:
names.append(f"{name['first']} {name['last']}")
return names
或者使用列表理解
def names_function(lst):
return [f"{name['first']} {name['last']}" for name in lst]
names_function(names)
两者都会输出
['John Smith', 'Jessie Snow']
您也可以将 return
替换为 yield
以将其变成生成器。要获取所有值,您需要迭代生成器(或对其调用 list
)
def names_function(lst):
for name in lst:
yield f"{name['first']} {name['last']}"
list(names_function(names))
结果相同
['John Smith', 'Jessie Snow']
我是 python 的新手,正在尝试编写一个接受字典列表的函数和 returns 一个新的字符串列表,每个字典中的名字和姓氏键连接在一起。
names = [{'first': 'John', 'last': 'Smith'}, {'first': 'Jessie', 'last': 'Snow'}]
def name_function(lst):
for name in lst:
return f"{name['first']} {name['last']}"
names_function(names)
'John Smith'
我写了一个遍历字典列表的 for 循环和 returns 一个连接每个字典中名字和姓氏键的 f 字符串,但是,循环无法迭代第一个键和我希望有人能指出我的问题。
如果要获取所有名称:
def names_function(lst):
ret=""
for name in lst:
ret += f"{name['first']} {name['last']}\n"
return ret
或
def names_function(lst):
return [f"{name['first']} {name['last']}" for name in lst]
如果你想创建一个生成器对象:
def names_function(lst):
return (f"{name['first']} {name['last']}" for name in lst)
虽然你有一个循环,但你在循环中也有一个 return
。在列表的第一次迭代中,此 return
将被命中并且函数的执行将停在那里,仅返回该行上的值 - 这是一个字符串 - 而不是预期的列表。
您需要在函数中添加一个列表以在返回之前用作累加器 —
def names_function(lst):
names = []
for name in lst:
names.append(f"{name['first']} {name['last']}")
return names
或者使用列表理解
def names_function(lst):
return [f"{name['first']} {name['last']}" for name in lst]
names_function(names)
两者都会输出
['John Smith', 'Jessie Snow']
您也可以将 return
替换为 yield
以将其变成生成器。要获取所有值,您需要迭代生成器(或对其调用 list
)
def names_function(lst):
for name in lst:
yield f"{name['first']} {name['last']}"
list(names_function(names))
结果相同
['John Smith', 'Jessie Snow']