Счетчик диапазона Python сбрасывается на 999 и добавляет тысячный номер в конце каждой строки - PullRequest
0 голосов
/ 12 сентября 2018

Я сделал пару поисков, но не нашел соответствующего сообщения.

I. Что случилось:

  • У меня есть список из ~ 9000 строк [строка1, строка2, ... строка 9001]
  • Я использовал цикл for для записи каждой строки в отдельной строке с порядковым номером:

    #z is a list with ~9000 items
    
    y = open('4.3 data.txt', 'w', encoding='utf-8')
    for i in range(0, len(z)):
        y.write(str(i) + '^')
        y.write(str(z[i]))
        y.write('\n')
    y.close()
    
  • то, что я получаю, похоже на следующее:

    0 blahblahblah
    1 blahblahblah
    ...
    998 blahblahblah
    999 blahblahblah
    000 blahblahblah1
    001 blahblahblah1
    ...
    999 blahblahblah1
    000 blahblahblah2
    001 blahblahblah2
    
  • Итак, в основном, кажется (и я обычно это читал) использование «диапазона» для подсчета идет до 999, затем оно (1) сбрасывается на 000 и (2) добавляет тысячу цифр к конец строки.

II. Что я хочу:

  • Хотелось бы узнать, есть ли способ отключить сброс на 1000, 2000 и т. Д., Чтобы я мог использовать диапазон и при этом счетчик увеличивался до 1000, 2000, 3000 и т. Д.
  • Если это невозможно / нежелательно, я хотел бы знать, какой альтернативный способ итерации по # элементам в списке, чтобы (1) индекс не сбрасывался (это не ТАК важно, хотя и ' было бы неплохо) и (2) строка не модифицируется, чтобы в ее конце была добавлена ​​тысяча цифр (я хочу, чтобы это было МНОГО)

Спасибо!

1 Ответ

0 голосов
/ 12 сентября 2018

Более "Pythonic" способ обработки это с перечислением .

Я бы также рекомендовал реализовать файловый ввод-вывод, используя open() в качестве диспетчера контекста.

Например:

with open('4.3 data.txt', 'w', encoding='utf-8') as y_file:
    for i, item in enumerate(z):
        print(str(i) + ' ' + str(item), file=y_file)
...