Как разделить каждое 10-е число на 10 в списке?

#python #python-2.7

#python #python-2.7

Вопрос:

У меня есть список, состоящий из 1 миллиона чисел, например:

 [1,2,3,4,5,6,7,8,9,100,11,12,13,14,15,16,17,18,19,200,.......]
  

в котором каждое 10-е число в 10 раз больше, чем должно быть. Я хотел бы исправить список так, чтобы каждое 10-е число было разделено на 10.

Я пробовал for i==0 then i=i/10 , но, похоже, это не работает для списка.

Комментарии:

1. Можете ли вы показать нам точный код, который вы использовали, и почему он не работает?

2. файл изначально был текстом, я преобразовываю его в список f = open(‘burettes(1).txt’, «r») N=[] для строки в f: N.добавьте(float(line.strip(‘n’))) для i в N: j= i 1, если j ==0: j= j /10 print (N)

3. Подсказка: Используйте ` для форматирования встроенного кода. Также делает массивы данных и исчисление более удобочитаемыми…

Ответ №1:

Вы можете достичь этого с помощью условного понимания внутри списка, обусловленного положением элемента (через enumerate ):

 X = [1,2,3,4,5,6,7,8,9,100,11,12,13,14,15,16,17,18,19,200]

# Quotient on 9 because lists are 0-indexed
y = [x/10. if i%10==9 else x for i, x in enumerate(X)]
  

 print(y)
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10.0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20.0]
  

Ответ №2:

Вы можете сделать это на месте, присвоив фрагменту:

 a = list(range(30))
a[::10] = [n//10 for n in a[::10]]
  

Однако для действительно больших массивов вам может быть лучше использовать NumPy, который позволит:

 import numpy as np
a = np.arange(30)
a[::10] //= 10