Для работы с большими списками вы можете найти сторонние библиотеки более эффективными, например, через Pandas или NumPy.
pandas
Создать 2 серии и использовать присваивание с логическим индексированием:
import pandas as pd
a = pd.Series([None, None, 1, None, 4, None, None, 5, None])
b = pd.Series([7,8,2,3,6,9])
a[a.isnull()] = b.values
print(a.values.astype(int).tolist())
# [7, 8, 1, 2, 4, 3, 6, 5, 9]
numpy
Аналогично NumPy, если вы используете np.nan
вместо None
:
import numpy as np
a = np.array([np.nan, np.nan, 1, np.nan, 4, np.nan, np.nan, 5, np.nan])
b = np.array([7,8,2,3,6,9])
a[np.isnan(a)] = b
# array([ 7., 8., 1., 2., 4., 3., 6., 5., 9.])
См. Также В чем преимущества NumPy по сравнению собычные списки Python? .