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

如果python中满足两个条件,则返回列表索引

如果python中满足两个条件,则返回列表索引

慕盖茨4494581 2021-03-12 10:11:50
如果两个条件都满足,我将尝试在列表中查找索引,并将这些索引存储在新列表中。目前,我可以在列表中找到符合条件的条目,但无法弄清楚如何获得列表索引。清单是:[[0, 1], [1, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [3, 0]]到目前为止,我的代码:m2=[]for i in range(0,len(gmcounter)):  if countersum[i]==2 and 2 in gmcounter[i]:    m2.append(gmcounter[i])print m2Countersum是一个包含list元素之和的列表,所以它返回[[0, 2], [2, 0]]并且我希望m2在满足两个条件的情况下采用索引值,所以我希望m1采用[4,5]我有一个想法,它将与枚举函数有关,但到目前为止,我尝试将其包括在内都没有成功将不胜感激任何帮助!
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

您i已经是满足两个条件的索引。


使用enumerate(),可能与结合使用zip()会是更多的pythonic方法:


m2=[]

for i, (csum, counter) in enumerate(zip(countersum, gmcounter)):

    if csum == 2 and 2 in counter:

        m2.append(i)

或者,使用列表推导:


m2 = [i for i, (csum, counter) in enumerate(zip(countersum, gmcounter)) if csum == 2 and 2 in counter]


查看完整回答
反对 回复 2021-03-24
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您可以像@Martijn一样完全不使用索引来执行此操作。或者,您可以采用基于索引的方法,然后简单地构建所需索引的列表:

[ i for i in range(len(gmcounter)) if countersum[i]==2 and 2 in gmcounter[i] ]

这不太“ pythonic”,而且触摸起来可能更慢,所以一定要注意无索引的工作方式。


查看完整回答
反对 回复 2021-03-24
  • 2 回答
  • 0 关注
  • 507 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号