You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单语句实现循环输入并收集结果至列表(无需while循环)

解决方法

你的问题出在while是语句,不能直接作为表达式赋值给变量或者嵌入列表字面量,Python不允许这种语法,所以才会报SyntaxError。

要实现不使用while循环的单语句需求,可以用Python的iter()函数结合lambda表达式来完成,代码如下:

self.languages = list(iter(lambda: input('Insert a language you know: '), 'no'))

效果验证

运行这段代码后,交互过程和你期望的完全一致:

Insert a language you know: English
Insert a language you know: French
Insert a language you know: no

最终self.languages的值就是['English', 'French'],完全符合需求。

原理说明

iter()函数在这里接受两个参数:

  • 第一个参数是一个无参可调用对象(这里用lambda封装了带提示的input调用)
  • 第二个参数是哨兵值:当可调用对象返回这个值时,迭代会立即终止,且这个哨兵值不会被加入最终的列表中。

这样就用一行语句实现了循环输入收集的功能,完全不需要显式写while循环。

内容的提问来源于stack exchange,提问作者Pyton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:12:06