#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