python - 在 Python 中解释了这一行,其中条件位于范围规范之后。
问题描述
我无法indexes =[ s.index(l) for l in letters if s.count(l) == 1]
从下面的代码中解释
class Solution:
def firstUniqChar(self, s):
"""
:type s: str
:rtype: int
"""
letters = 'abcdefghijklmnopqrstuvwxyz'
indexes =[ s.index(l) for l in letters if s.count(l) == 1]
return min(indexes) if len(indexes) > 0 else -1
看起来它正在通过字符串 s,如果来自 letts 的字母在字符串 s 中,它会记录该索引位置的位置。然后,如果该索引的计数等于 1,则它仅返回索引。但是我尝试在该行中没有条件的情况下运行代码
indexes =[ s.index(l) for l in letters ]
它返回一个错误
'ValueError:找不到子字符串'
这是我用来实例化和运行该功能的方法
sol = Solution()
sol.firstUniqChar('loveleetcode')
解决方案
您可能想以不同的方式重写难以理解的部分,这个:
indexes =[ s.index(l) for l in letters if s.count(l) == 1]
变成了这个(我也用'c'替换了难以阅读的小写'l'(如'character'):
indexes = []
for c in letters :
if s.count(c) == 1 : # check if 's' contains a unique 'c'
indexes.append( s.index(c) )
所以,你看,如果你删除if s.count(c) == 1
条件,它会尝试查找s
所有可能的小写字母,而不仅仅是那些只包含s
一次的小写字母,一旦找不到字母就会给你例外。
推荐阅读
- c# - 执行 dotnet publish 发布的程序集时找不到依赖项
- asp.net-mvc - 混合 MSAL 和 MVC 表单身份验证
- laravel-backpack - 如何在背包中隐藏字段
- spring - 处理 REST API 调用的顺序
- ionic3 - 如何对 Ionic 3 应用程序进行单元测试
- ssl - 如何将 Cpanel 自动生成的 SSL 下载为(key.pem 和 cert.pem)
- lua - loadstring 和 Lua 中普通函数定义的区别?
- html - 从标签外部提取 HTML
我正在尝试提取位于
<table>
标签上方和下方的 HTML 部分,例如从下面的示例 html 中:sample_html = """ <html> <title><b>Main Title</b></Title> <b>more</b> <b>stuff</b> <
- node.js - 使用 angular8、nodejs 和 multer 上传视频时出现意外字段
- ajax - Typo3 后端加载覆盖和微调器不会仅在 Firefox 中消失