Sha*_*der -2 python list-comprehension list python-3.x
我有一个列表列表,我想找到出现“ //”的索引。我知道如何使用嵌套循环,但是我想使用列表理解。我的清单是:
ex = [['foo', 'faa'], ['//', 'sd'], ['foo', 'kaa'], ['side', 'haha', 'blue'], ['//', 'sd']]
Run Code Online (Sandbox Code Playgroud)
如何在此处使用列表理解来查找出现“ //”的索引?到目前为止,我所做的是:
indices = [idx for idx, lst in enumerate(ex)]
Run Code Online (Sandbox Code Playgroud)
这给了我列表中列表的索引。但是我不知道如何使用这些来查找'//'使用列表理解的索引。
对于上面的ex示例,预期输出为
[1, 4]
Run Code Online (Sandbox Code Playgroud)
例如,对于含有嵌套列表的索引'//',这是ex[1]和ex[4]。
仅当输出包含嵌套列表时,才需要嵌套列表理解。列表推导产生列表,嵌套列表推导产生列表列表。对于通过测试的每个嵌套列表,您仅在此处生成索引。
如果您要做的只是测试'//'嵌套列表中的字符串,只需if在列表理解中使用过滤表达式:
indices = [idx for idx, lst in enumerate(ex) if '//' in lst]
Run Code Online (Sandbox Code Playgroud)
如果您需要知道是否'//'是任何值的子字符串,那么它仍然是一个过滤器测试,但是带有any()函数和生成器表达式:
indices = [idx for idx, lst in enumerate(ex) if any('//' in el for el in lst)]
Run Code Online (Sandbox Code Playgroud)
该any()函数一次迭代生成器表达式一步,一旦生成的结果为真值,它将停止迭代并返回True。这使得测试嵌套列表成为一种非常有效的方法。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |