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

如何在Python中分割字符串后直接追加到两个数组且不创建临时变量?

更优雅的无临时变量实现方案

嘿,我懂你追求简洁优雅代码的心情!先说说你最初用map+lambda的问题:确实是因为list.append()方法执行后会返回None,而map期望的是能处理参数并返回值的函数,所以那套写法逻辑上就行不通,而且map本来也不是用来做这种带副作用(修改列表)的操作的。

给你两个更符合需求的方案,都不需要额外的临时列表:

方案一:直接解包输入行(可读性拉满)

既然每行输入分割后正好是两个元素,咱们可以直接把它们解包到两个变量里,再分别追加到列表,完全不用临时列表:

a = []
b = []
for _ in range(n):
    # 如果需要转成整数,就改成 x, y = map(int, raw_input().split())
    x, y = raw_input().split()
    a.append(x)
    b.append(y)

这个写法比你之前用buf的版本更清爽,没有多余的临时变量,逻辑一目了然。

方案二:用生成器+zip一次性生成(简洁Pythonic)

如果想更极致一点,甚至可以用生成器表达式配合zip的解包特性,直接批量生成a和b:

# 生成器会逐行读取输入,不会一次性创建所有行的列表,内存效率也高
rows = (raw_input().split() for _ in range(n))
# 用zip把所有行的第一个元素、第二个元素分别打包,再解包给a和b
a, b = zip(*rows)
# 如果需要把元组转成列表(zip返回的是元组),再加两行转换
a = list(a)
b = list(b)

这个写法完全没有用到临时列表,生成器是惰性计算的,不会占用额外的内存存储所有行的数据,而且代码非常简洁,很有Python风格。

两种方案都满足你“不创建额外临时变量或临时列表”的需求,你可以根据自己的可读性偏好来选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:31:00