python - 从列表中选择每第 n 个值并替换它们之间的值
问题描述
我在 python 中有一个列表,其中包含一些值: List = [0,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8, 9, ...,n] 我想做的是选择每第 n 个值,并用零填充它们之间的距离。这样我最终得到以下列表:Result = [0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,0,0,0, .. .,n] 注意:并不总是 5。
我所做的:编写类似窗口函数的东西并遍历列表。
def window(x):
window = []
for ii in range(len(x)):
mask = [0,1,2,3,None,5,6,7,8]
select = [x is None for x in mask]
center = list(itertools.compress(x[ii],select))
window.append(center)
for ii in range(0,4):
center.insert(0,"0")
center.append("0")
return window
此函数有效,但在第一次迭代后如何停止,我不知道为什么。
解决方案
您可以将每个第 n 个项目存储在一个单独的变量中,然后将整个列表分配给填充值,然后填充存储的那些(这不会创建原始列表的副本):
import itertools as it
l = list(range(20))
tmp = l[::5]
l[:] = it.repeat(0, len(l))
l[::5] = tmp
如果您可以制作副本,那么您还可以使用以下内容:
l = list(range(20))
l = [0 if i % 5 else x for i, x in enumerate(l)]
推荐阅读
- r - 按组 ID 对满足条件的多个列的观察计数和平均值
- sql-server - 查看 dtsx 文件的内容
- firebase - 为什么我的推送通知云功能无法正常工作
- r - 根据另一个因子列对R数据框中的因子列进行排序
- reactjs - 如何从 setState 方法中防止“警告:在 StrictMode 中不推荐使用 findDOMNode”
- express - 如何从当前 API 中发布到外部 API - 使用 POST JSON 正文?
- r - 当在 `by` 中使用变量时,.N 与长度(变量)不同
- ios - 离子相机边框 API
- android - 如何配置通知渠道以显示多个通知
- python - 如何在 FastAPI 中测试客户端调用正确的端点方法?