我有一个包含列表的列表。例如:
lst = [1, 2, 'c', [4, 5], 'f', ['g', 'h', 'i']]
Run Code Online (Sandbox Code Playgroud)
我想在中找到列表的索引lst(inlst是 3 和 5)。
到目前为止我所拥有的:
lst_idx = [lst.index(val) for val in lst if type(val) is list]
Run Code Online (Sandbox Code Playgroud)
但是,我的实际数据有数千个列表,每个列表都有数千个元素,因此上面的列表理解需要花费大量时间。有没有办法以某种矢量化的形式做?理想情况下,我想要某种长度的掩码,len(lst)如果列表为假,则为真。
这里的中心问题不是子列表的大小;这应该无关紧要。相反,它是您选择查找您手头已有的列表的位置。摆脱那个昂贵的index调用:当在一个长的子列表上使用时,它是昂贵的。只需跟踪您的位置。
lst_idx = [idx for idx, val in enumerate(lst) if type(val) is list]
Run Code Online (Sandbox Code Playgroud)
还可以考虑替换type(val) is list为isinstance(val, list)
| 归档时间: |
|
| 查看次数: |
35 次 |
| 最近记录: |