Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 12, 2011 19:30:33

idmon
От:
Зарегистрирован: 2011-04-03
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

Есть файл с одной строкой в которой записаны числа разделенные пробелами. Например:

3 25 4500 1 2 3 8 99
Как красиво считать эту строку так, чтоб потом можно было сравнивать числа между собой? Для того, чтобы например, найти в ней максимально длинную подстроку, в которой каждое следующее число было на 1 больше предыдущего.



Офлайн

#2 Апрель 12, 2011 20:26:08

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

Например, так:

string = "3 25 4500 1 2 3 8 99"
numbers_list = map(int, string.split(' '))



Отредактировано (Апрель 12, 2011 20:26:33)

Офлайн

#3 Апрель 12, 2011 20:30:30

Studentik
От:
Зарегистрирован: 2009-12-26
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

считать так:

with open(r"test.txt") as f:
nums = [int(v) for v in f.read().split()]
print(nums)



Офлайн

#4 Апрель 12, 2011 20:42:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

Я использую или numpy.genfromtxt()
Или импортирую все с помощью самопального Import() - Который парсит вход и сразу преобразовывает типы переменных на основе их внешнего вида : 234 ->int 23.45 ->float asd->str ну и так далее. Результат список списков объектов - по сути содержимое файла. Меня вообще удивляет что такая утилита не входит в стандартный питон. Если самопал нужен могу кинуть.



Офлайн

#5 Апрель 12, 2011 21:05:11

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

doza_and, человек, судя по задаче, олимпиадник, и, думаю, с numpy ему не по дороге )



Офлайн

#6 Апрель 12, 2011 21:33:51

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

Да извините не вник в задачу. Похоже вы правы. В качестве компенсации предлагаю:

import re
a="3 25 4500 1 2 3 8 99"
sk=eval("["+re.sub(" (?P<i>\d+)","-\g<i>,\g<i>",a)+"]")[:-1]
А дальше тоже привлекательно регексами выделить ( -1,)+



Офлайн

#7 Апрель 13, 2011 22:14:03

idmon
От:
Зарегистрирован: 2011-04-03
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

Спасибо за примеры. Задача да, олимпиадная)

Почему в примере:

numbers_list = map(int, string.split(' '))
правильно писать int, а не int()?



Отредактировано (Апрель 13, 2011 22:24:01)

Офлайн

#8 Апрель 13, 2011 22:48:29

python4ik
От:
Зарегистрирован: 2010-01-05
Сообщения: 251
Репутация: +  0  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

string = "3 25 4500 1 2 3 8 99"
mas = string.split()
int пишется потому, что эта функция является аргументом функции map(указатель на функцию…)
map сама расставляет кавычки :)
примерно так:
for x in string.split():
mas.append(int(x))



Отредактировано (Апрель 13, 2011 23:10:01)

Офлайн

#9 Апрель 14, 2011 09:15:50

idmon
От:
Зарегистрирован: 2011-04-03
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Как считать из файла строку чисел

python4ik
int пишется потому, что эта функция является аргументом функции map(указатель на функцию…)
Понял, спасибо.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version