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

Python 3:读取整数直至输入-1停止,能否用列表推导式简洁实现?

用列表推导式实现“读取整数直到输入-1停止”的需求

嘿,当然能用列表推导式简洁搞定这个需求!先直接上可行的代码,再给你拆解细节:

nums = [int(input()) for _ in iter(lambda: input(), '-1')]

代码逻辑拆解

这个写法的核心是利用Python内置函数iter()的特殊用法:当你给iter()传入一个无参可调用对象和一个哨兵值时,它会持续调用这个对象,直到返回值等于哨兵值时停止迭代。

这里的细节点:

  • lambda: input() 是一个无参函数,每次调用都会获取用户的一次输入
  • 哨兵值设为'-1',因为input()返回的是字符串类型,当用户输入-1时,迭代就会终止
  • 列表推导式会把迭代过程中拿到的每一个输入字符串转换成整数,最终生成目标列表

验证示例输入

按照你给出的示例,依次输入1、2、3、4、5、6、7、10、-1,运行代码后会得到:

nums = [1,2,3,4,5,6,7,10]

完全符合你的期望结果。

备选:直观的常规写法(对比参考)

如果觉得列表推导式的写法有点抽象,这里给你放一个更直观的循环版本,方便你理解逻辑对应关系:

nums = []
while True:
    user_input = input()
    if user_input == '-1':
        break
    nums.append(int(user_input))

两种写法的逻辑是完全一致的,列表推导式只是把这个循环逻辑浓缩成了一行代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:50:45