Python 如何逐个读取在同一行中以空格分隔的数据?

2020-10-21 13:30:05 +08:00
 KIRAYOMATO
比如 1 2 3 4 5 这样的
网上找到的只有用 list(map(lambda x :int(x),input().split()))来把一整行扫成一个列表
但是这样子如果数据太多的话 oj 就会爆内存。
1253 次点击
所在节点    问与答
5 条回复
imn1
2020-10-21 13:40:54 +08:00
oj 是什么?

其实不知道怎么回答,问题你自己已经答了
至于你说内存会爆,那是业务流程,好像跟不是“如何读取”的问题

怕内存爆,就读一行处理一行呗
ysc3839
2020-10-21 14:32:20 +08:00
自己根据 split 的算法,配合 Python 的 generator 实现一个即可。
这里给一个只能分割单个字符的版本作为参考。由于 V2EX 会删除每行开头的空格,需要你自己补全空格使其正常工作。

def lazy_split(str, sep):
start = end = 0
for ch in str:
if ch == sep:
yield str[start:end]
start = end + 1
end += 1
yield str[start:]

if __name__ == '__main__':
for i in lazy_split('abc bcd cde def', ' '):
print(repr(i))
luckyrayyy
2020-10-21 14:42:39 +08:00
oj?那你顺序读取,遇到空格就扔掉不就行了
learningman
2020-10-21 19:40:18 +08:00
算法题拿 Python 写。。。?
我觉得 Java 都有点难
KIRAYOMATO
2020-10-21 23:37:54 +08:00
就是同一行里面有特别多以空格分隔的数据,全部放在一个 list 里面的话内存占用会超过题目限制

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717078

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX