Python遍历列表拼接url时重复输出最后一个元素问题求解
问题原因
- f-string的插值逻辑是定义时立即求值,并非后续调用时动态计算。你将url的定义放在了for循环外部,整个运行过程中只会计算1次url的值,不会随着循环遍历自动更新。
- 你的代码在循环外引用了尚未定义的循环变量
list,当前运行没有报错还返回了MSFT,是因为你之前已经执行过该循环,运行环境中残留了上一次循环结束时list被赋值的最后一个元素值。如果在全新的Python环境中直接运行这段代码,第二行就会抛出NameError报错。 - 额外注意:不要使用
list作为自定义变量名,它是Python内置的列表类型标识,覆盖后会影响后续列表内置方法的正常调用。
修复方案
将url的生成逻辑移到for循环内部,每次遍历新元素时重新生成对应的url即可,修复后代码如下:
lists = ["FB", "APPL", "MSFT"] # 用item代替list作为循环变量名,避免覆盖内置关键字 for item in lists: print(item) url = f'https://finance.yahoo.com/quote/{item}' print(url)
运行后输出结果符合预期:
FB https://finance.yahoo.com/quote/FB APPL https://finance.yahoo.com/quote/APPL MSFT https://finance.yahoo.com/quote/MSFT
内容的提问来源于stack exchange,提问作者yeeping50
相关产品推荐
相关产品推荐

