Как открыть 2 файла данных каждые 100 шагов - PullRequest
0 голосов
/ 17 мая 2018

Скажем, у меня есть 20 интересных файлов данных, взятых два шага каждые сто, выглядит так:

1.dat, 2.dat, 101.dat, 102.dat, 201.dat, 202.dat .... 2001.dat, 2002.dat

как я могу использовать open для извлечения данных из них? Я написал:

for t in range(1,2001, 100) and range(2, 2002, 100):
  f = open( str(t) +'.dat', 'r') 
y = np.array([[float(data) for data in line.split()] for line in f.readlines()])
f.close()

Кажется, это не работает, только range(2,2002,100) может быть прочитано.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я бы использовал комбинацию zip и itertools.chain:

from itertools import chain

for t in chain.from_iterable(zip(range(1,2001,100), range(2, 2002, 100))):
    with open("{}.dat".format(t)) as f:
        y = np.array([[float(data) for data in line.split()] for line in f])

zip дает вам последовательность с (1,2), (101, 102), etc.chain.from_iterable "выравнивает" последовательность до 1, 2, 101, 102, etc.

Ручная версия этого может выглядеть как

for t in (x for y in range(1,2001,100) for x in (y, y+1)):

или как гибрид двух:

for t in chain.from_iterable((x, x+1) for x in range(1, 2001, 100)):
0 голосов
/ 17 мая 2018
for t in range(1,2001, 100) + range(2, 2002, 100):

Если вы хотите отсортировать:

for t in sorted(range(1,2001, 100) + range(2, 2002, 100)):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...