为了账号安全,请及时绑定邮箱和手机立即绑定

使用迭代器对数组进行切片

使用迭代器对数组进行切片

慕标5832272 2022-06-02 15:12:03
我正在查看这个 python 代码,我需要一些解释:arr = [0, 0, 0, 0, 1, 2, 3, 4,5]arr = arr[next((i for i, x in enumerate(arr) if x != 0), len(arr)):]此代码将从数组中删除前导零,我试图了解它是如何工作的。我知道我们创建了一个迭代器,它将迭代arr除 0 值之外的所有元素,然后只迭代直到数组的长度(不包括)。但是这些索引是如何由 next 返回的,组合成一个数组呢?
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

让我们一步一步看代码。你想切掉最初的零。如果您知道第一个非零元素的索引n,则表达式看起来像

arr = arr[n:]

这基本上就是我们在这里所拥有的,使用n = next((i for i, x in enumerate(arr) if x != 0), len(arr)).

通常,双参数形式的next将返回第二个参数作为标记,而不是StopIteration在迭代器用完时引发 a。这就是它的len(arr)用途。如果所有元素都为零,则表达式变为

arr = arr[len(arr):]  # obviously empty

如果有一个非零元素,next调用将找到它的索引(启用enumerate),并返回它。


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信