Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
3 / 2 / 2
Регистрация: 04.09.2013
Сообщений: 45

Чтение определенного количества чисел из строки

23.01.2024, 19:48. Показов 1165. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый!
Есть задача:
Числа записаны в строку. Количество чисел может быть "неограниченно" большим. Необходимо прочитать из строки N чисел и записать в массив(список).

Придуманы два алгоритма:
1) Читаем строку. Получаем срез по N пробел. записываем в список через list(map(...)).
2) Читаем все сразу в промежуточный список. Из этого списка читаем N чисел в нужный массив.

И тот, и другой вариант несут промежуточные операции и хранение лишних чисел.

Как можно по другому прочитать и записать N чисел из строки?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.01.2024, 19:48
Ответы с готовыми решениями:

Чтение определенного количества байтов
Здраствуйте! Есть файл a.txt содержание которого: a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa

Чтение определенного количества строк в минуту и добавление данных в файле вывода для каждой строки
Добрый день форумчане и его жители. В данный момент у меня есть код, который делает query URL с параметрами из файла и создает output в...

Чтение определенного количества строк
Помогите, пожалуйста, с функцией, чтобы можно было из файла считать определенное кол-во строк и запихнуть их все в одну переменную

15
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.01.2024, 20:07
Регуляркой )))))

Добавлено через 8 минут
Python
1
2
3
4
5
import re
 
n = 5
lst = list(map(int, re.search(r'(-?\d+ ?){,%d}' % n, input())[0].split()))
print(lst)
3
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
23.01.2024, 20:35
Python
1
2
3
lst = (int(num) for num in input().split())
res = [next(lst) for n in range(5)]
print(res)
2
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,324
23.01.2024, 20:51
Цитата Сообщение от alspay Посмотреть сообщение
N чисел из строки?
"мтиавпи1аакапкуц2укцк3пкупеупу4купеупеу 5тилортмальтваыт" - строка?
взлетят два ответа?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.01.2024, 20:54
Ципихович Эндрю, глаза разуй, летчик
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
24.01.2024, 09:40
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Регуляркой
это да, конечно... но... ввод ведь из файла.
и:
Цитата Сообщение от alspay Посмотреть сообщение
Количество чисел может быть "неограниченно" большим
- чтение такой строки + регулярки... не подавится ли змейка? ... тут, наверное, потоковое чтение потребуется (или генератор с пошаговым вызовом, как у Gdez), причем посимвольное, ибо безразмерная строка одна же
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
24.01.2024, 10:19
YuS_2, чето я тут не увидел ни слова про файл

Добавлено через 1 минуту
Цитата Сообщение от YuS_2 Посмотреть сообщение
чтение такой строки + регулярки... не подавится ли змейка?
Даже если и файл, регулярка не подавится. Всмысле ЭТА регулярка. Как раз наоборот.
А вот в плане чтения всего файла в память - другой базар.
1
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
24.01.2024, 11:37
Цитата Сообщение от iSmokeJC Посмотреть сообщение
чето я тут не увидел ни слова про файл
А, ну да... это я уже "додумал", что раз числа записаны в безразмерную строку, то она должна быть в файле...
Но, в продуктах микрософта есть ограничение на длину строкового литерала в 65535 байт ... есть ли такое в python? С наскока не нашел... но по памяти-то точно не даст создать безразмерную строку, выкинет исключение...

Цитата Сообщение от iSmokeJC Посмотреть сообщение
в плане чтения всего файла в память
Да, это и имел в виду... ведь, придется "пихать" всё в память, а потом уже искать...
0
3 / 2 / 2
Регистрация: 04.09.2013
Сообщений: 45
24.01.2024, 13:28  [ТС]
Читаем поток.
N = 5
1 2 3 4 5 6 7 8 9

т.е. в список надо записать только первые 5 чисел:
1 2 3 4 5

Регулярка - это жестко)))

А если прочитать всю строку

Python
1
s = input()
И из строки вытащить только 5 чисел?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38174 / 21109 / 4307
Регистрация: 12.02.2012
Сообщений: 34,712
Записей в блоге: 14
24.01.2024, 13:33
Самая экономная схема (чтение по одному символу):

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def foo(fname,n):
    fi=open(fname,"r")
    r=[]
    sz=0
    while sz<n:
        acc=""
        while True:
            a=fi.read(1)
            if a in "0123456789":
                acc=acc+a
            else:
                if len(acc)>0:
                    r.append(int(acc))
                    sz+=1
                    break
    fi.close()
    return r
    
print(foo("111.txt",6))
Файл 111.txt:

23 67 888 3 d 2 222 65


Ничего лишнего
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
24.01.2024, 13:43
Цитата Сообщение от alspay Посмотреть сообщение
И из строки вытащить только 5 чисел?
Так и получается. Сплит и срез.

Добавлено через 36 секунд
Или как в идее Catstail, посимвольно перебирать.

Добавлено через 1 минуту
Цитата Сообщение от Catstail Посмотреть сообщение
Самая экономная схема
Самая питонячья схема - это у Gdez, через генератор
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
24.01.2024, 14:01
alspay,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
s = iter('1 2 3 4 5 6 7 8 9')
k, d, nums = 5, '', []
# s = iter(input())
#k, d, nums = int(input()), '', []
while k:
    w = next(s)
    if w == ' ':
        k -= 1
        nums.append(d)
        # nums.append(int(d))
        d = ''
    else:
        d += w 
print(*nums)
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
24.01.2024, 14:05
Цитата Сообщение от alspay Посмотреть сообщение
Регулярка - это жестко)))
Нет. Всё будет зависеть от того, на что её натравливать
А вот это:
Цитата Сообщение от alspay Посмотреть сообщение
если прочитать всю строку
- точно жестко, ибо на входе:
Цитата Сообщение от alspay Посмотреть сообщение
Количество чисел может быть "неограниченно" большим.
- безразмерное количество памяти... это не у каждого под рукой может оказаться

Цитата Сообщение от Catstail Посмотреть сообщение
Самая экономная схема (чтение по одному символу)
Да! Об этом и говорил:
Цитата Сообщение от YuS_2 Посмотреть сообщение
потоковое чтение потребуется (или генератор с пошаговым вызовом, как у Gdez), причем посимвольное


Цитата Сообщение от iSmokeJC Посмотреть сообщение
Самая питонячья схема - это у Gdez, через генератор
Это да, генераторы - это мощно.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38174 / 21109 / 4307
Регистрация: 12.02.2012
Сообщений: 34,712
Записей в блоге: 14
24.01.2024, 16:38
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Самая питонячья схема - это у Gdez, через генератор
- генератор - это обертка.
0
3 / 2 / 2
Регистрация: 04.09.2013
Сообщений: 45
28.01.2024, 12:06  [ТС]
хм...
т.е. проблема только неизвестной длине строки?
А если в строке известно, что есть M чисел (M >= N)? И надо получить N чисел. В этом случае как "вытащить" строго определенное количество?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.01.2024, 12:10
Не заниматься онанизмом и использовать срез
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2024, 12:10
Помогаю со студенческими работами здесь

Чтение определенного количества символов из файла
Подскажите пожалуйста какой функцией можно прочитать определенное количество символе из файла Наприклад, файл містить 25 символів....

Чтение/запись определенного количества байт из бинарного файла
Подскажите пожалуста как реализовать на с++ в RAD Studio чтение определенного количества байт из нетекстового файла,а так же запись по...

Найти произведение количества нечетных чисел строки матрицы и количества положительных чисел столбца
А)Найти количество положительных нечетных элементов; Б)Найти сумму элементов, находящихся на побочной диагонали; В)В матрице А(3;3)...

В матрице А найти сумму количества четных чисел 2- ой строки и количества отрицательных чисел 4-го столбца
В матрице А найти сумму количества четных чисел 2- ой строки и количества отрицательных чисел 4-го столбца

Найти сумму количества четных чисел 2-ой строки и количества отрицательных чисел 4-го столбца матрицы
В матрице A(5; 5) найти сумму количества четных чисел 2-ой строки и количества отрицательных чисел 4-го столбца


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru