python - 像 C++ 中的 cin >> 这样从一行中一个接一个地读取元素
问题描述
任务:
给定一个由 N 个整数组成的序列。找出这个序列有多少个元素等于这个序列的第一个元素(不计算第一个元素)。
N (1 ≤ N ≤ 10^6)
这些数字不超过 10^9 模 (abs())示例:
输入:
6
-5 7 0 -5 3 -5
输出:
2输入:
6
5 7 0 -5 3 -5
输出:
0
有内存限制和时间限制:32MB,1秒。
随着时间的流逝,一切都很棒。我的解决方案与小型测试完美配合:
input()
arr = list(map(int, input().split()))
print(arr.count(arr[0]) - 1)
通过大量测试用例,我得到了超出内存限制的错误。我需要做的是从一行输入中获取一对一的值,然后将它们删除,这样我就不会超过内存限制。
问题:在 Python 中进行单行输入时,如何逐一(而不是作为列表)获取值。
EDIT1 这不是一个合适的解决方案 - Python 中是否有`string.split()` 的生成器版本?. 我们仍然阅读整行。如果我使用该解决方案,我会收到 Time Limit Exceeded 错误。上一版题——一行一行的读取元素
解决方案
谢谢大家,列表生成器。我为我的问题修改了它。该解决方案非常适合该问题。我希望它会帮助某人。
import re
def split_iter():
return (x.group(0) for x in re.finditer(r"[-0-9']+", input()))
input()
gen = split_iter()
first = next(gen)
ans = 0
for i in gen:
if i == first:
ans += 1
print(ans)
推荐阅读
- laravel - 在不支持大整数的情况下无法调用 Ramsey\Uuid\Converter\Number\DegradedNumberConverter::toHex
- trace32 - 一旦将覆盖缓冲区添加到覆盖数据库,Trace32 就会停止
- angular - 如何在Angular中比较日期和时间
- python-3.x - 在数据框列中搜索字符串
- javascript - 将正确的数据从 API 插入到 MongoDB
- git - Jenkins 文件的 Jenkins 多分支管道错误
- sql-server - 无法将始终加密的 varbinary 加密列转换为任何类型
- ruby-on-rails - 如何在 ActiveAdmin 的仪表板中使列可排序?
- android - 无法使用 MediaBrowserServiceCompat
- c++ - Pisano 周期生成器在 3 位周期中的行为不正确