Python для чтения определенных строк для расчета
У меня есть список с номерами, где я делаю определенный расчет и работает отлично, список представляет собой текстовый файл "file.txt", в нем у меня есть значения (по одному в каждой строке). В каждом расчете / проверке я использую две строки, в которых много строк, пример приведен ниже.
"File.txt"
73649
38761
34948
47653
98746
59375
90251
83661
... больше строк / цифр
В этом случае я бы использовал строки 1 и 2 для первого вычисления, я хотел бы, чтобы это было ЛОЖЬ, когда он использует строки 2 и 3, в случае ЛОЖЬ используйте строки 3 и 4, пока он не станет ИСТИНОЙ.
Возможно ли сделать это в Python? Заранее спасибо.
2 ответа
Я думаю, что это отвечает на ваш вопрос:
(это не будет очень эффективно для очень больших текстовых файлов размером более сотни мегабайт)
def calc(x, y):
# do your calculation here
file = open("file.txt", "r")
list = file.readlines()
file.close()
item = 0
while item < len(list) - 1:
if calc(list[item], list[item + 1]) == false:
item += 1
# once you have found the lines that output false, you can do whatever you
# want with them with list[item] and list[item + 1]
Я думаю, что этот код должен ответить на ваш вопрос:
lst = [int(line) for line in open('bar.txt','r')]
for n in range(len(lst)-1):
a, b = lst[n], lst[n+1]
if calculation(a,b): break
else:
a, b = None, None
Когда вы выходите из цикла, (a,b) содержит пару, для которой calculation
функция вернула True. Если все звонки calculation
вернули False, (a,b) заменено на (None,None)
В качестве альтернативы, когда ваши данные передаются в потоковом режиме или не могут быть полностью сохранены в памяти, вы можете напрямую зацикливаться на строках потока:
with open('bar.txt', 'r') as file:
a = None
for b in file:
b = int(b)
if a != None and calculation(a,b): break
a = b
else:
a, b = None, None