我有一个包含一百万个数字的列表(例如Makefile
,其中每10个数字应为应乘数字的10倍。我想更正此列表,以使每10个数字除以10。
我尝试过[1,2,3,4,5,6,7,8,9,100,11,12,13,14,15,16,17,18,19,200.......]
,但似乎不适用于列表。
答案 0 :(得分:2)
您可以在列表理解中使用条件来实现此目的,并以元素的位置为条件(通过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]
答案 1 :(得分:0)
您可以通过分配切片来就地执行此操作:
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