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
Другие вопросы по тегам