python取非_从Python的子列表中获取所有非none项的索引?

根据标题,我有这样一个嵌套列表(嵌套列表是固定长度):# ID, Name, Value

list1 = [[ 1, "foo", 10],

[ 2, "bar", None],

[ 3, "fizz", 57],

[ 4, "buzz", None]]

我想返回一个列表(项数等于list1中的子列表的长度),其中子列表是没有第x项的行的索引,即:

^{pr2}$

以list1为例,结果应该是:[[0, 1, 2, 3], [0, 1, 2, 3], [0, 2]]

我目前的实现方式是:indices = [[] for _ in range(len(list1[0]))]

for i, row in enumerate(list1):

for j in range(len(row)):

if not isinstance(row[j], types.NoneType):

indices[j].append(i)

…这是可行的,但可能很慢(列表的长度为几十万)。在

有没有更好/更有效的方法?在

编辑:

我已经将上面的for循环重构为嵌套的列表理解(类似于SilentGhost的答案)。下面这一行给出了与我最初实现相同的结果,但是运行速度快了大约10倍。在[[i for i in range(len(list1)) if list1[i][j] is not None] for j in range(len(log[0]))]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值