gpt4 book ai didi

python - 如何在Python中逐字输入一行?

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:16 25 4
gpt4 key购买 nike

我有多个文件,每个文件都有一行,每个文件大约有 10M 个数字。我想检查每个文件,并为每个有重复数字的文件打印 0,为每个没有重复数字的文件打印 1。

我正在使用列表来计算频率。由于每行有大量数字,我想在接受每个数字后更新频率,并在发现重复数字时立即中断。虽然这在 C 语言中很简单,但我不知道如何在 Python 中做到这一点。

如何以逐字方式输入一行而不存储(或将其作为输入)整行?

编辑:我还需要一种通过实时输入而不是文件来执行此操作的方法。

最佳答案

读取该行,分割该行,将数组结果复制到一个集合中。如果集合的大小小于数组的大小,则文件包含重复元素

with open('filename', 'r') as f:
for line in f:
# Here is where you do what I said above

要逐字读取文件,请尝试此操作

import itertools

def readWords(file_object):
word = ""
for ch in itertools.takewhile(lambda c: bool(c), itertools.imap(file_object.read, itertools.repeat(1))):
if ch.isspace():
if word: # In case of multiple spaces
yield word
word = ""
continue
word += ch
if word:
yield word # Handles last word before EOF

然后你可以这样做:

with open('filename', 'r') as f:
for num in itertools.imap(int, readWords(f)):
# Store the numbers in a set, and use the set to check if the number already exists

此方法也适用于流,因为它一次只读取一个字节,并从输入流中输出一个空格分隔的字符串。

<小时/>

给出这个答案后,我已经更新了这个方法很多。看看吧

<script src="https://gist.github.com/smac89/bddb27d975c59a5f053256c893630cdc.js"></script>

关于python - 如何在Python中逐字输入一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37760124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com