Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中解释了这一行,其中条件位于范围规范之后。_Python - Fatal编程技术网

在Python中解释了这一行,其中条件位于范围规范之后。

在Python中解释了这一行,其中条件位于范围规范之后。,python,Python,如果s.count(l)==1,我很难从下面的代码中解释索引=[s.index(l)表示l的字母] class Solution: def firstUniqChar(self, s): """ :type s: str :rtype: int """ letters = 'abcdefghijklmnopqrstuvwxyz' indexes =[ s.index(l) for l in l

如果s.count(l)==1,我很难从下面的代码中解释
索引=[s.index(l)表示l的字母]

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,它只返回索引。但是我试着在没有条件的情况下运行代码

index=[s.index(l)表示字母中的l]

然后返回一个错误

'ValueError:未找到子字符串'

下面是我用来稳定和运行函数的内容

sol = Solution()
sol.firstUniqChar('loveleetcode')

如果
str
中不存在
sub
,则
str.index(sub)
将引发异常,因此如果未指定搜索条件,则
s.index(l)
将运行
ValueError
异常。我想你需要改变你的方式。

str.index(sub)
如果
sub
str
中不存在,那么
s.index(l)
将抛出异常,因此如果你没有指定搜索条件,那么
s.index(l)
将运行到
ValueError
异常中。我想你需要改变你的方式。

你可能想用一种不同的方式重写这篇难以理解的文章,如下所示:

indexes =[ s.index(l) for l in letters if s.count(l) == 1]
变成这样(我还将难以阅读的小写字母“l”替换为“c”(如“character”):


所以,你看,如果你去掉
if s.count(c)==1
有条件,它将尝试在
s
中查找所有可能的小写字母,而不仅仅是那些包含在
s
中的小写字母,仅查找一次,并在未找到该字母时为您提供例外情况。

您可能希望以稍微不同的方式重写难以理解的部分,这是:

indexes =[ s.index(l) for l in letters if s.count(l) == 1]
变成这样(我还将难以阅读的小写字母“l”替换为“c”(如“character”):


所以,你看,如果你去掉
if s.count(c)==1
有条件,它将尝试在
s
中查找所有可能的小写字母,而不仅仅是那些包含在
s
中的小写字母,仅查找一次,并在未找到该字母时给出例外情况。

假设您的目标是在单个字符串中查找第一个唯一字符,则可以执行以下操作:(实际上,您不必遍历整个字母表)

这将返回字符串本身中唯一出现的第一个字符。如果您希望第一个字母字母唯一出现,您可以这样做(有一些不重复的方法,我只是喜欢,因为可能不是您想要的):


假设您的目标是在单个字符串中找到第一个唯一字符,您可以执行以下操作:(您实际上不必遍历整个字母表)

这将返回字符串本身中唯一出现的第一个字符。如果您希望第一个字母字母唯一出现,您可以这样做(有一些不重复的方法,我只是喜欢,因为可能不是您想要的):


呃,糟糕的代码..提示:当您试图在
s
中查找
s
不包含的字母的索引时会发生什么情况?顺便说一句,这不是查找字符串中第一个唯一字符的最糟糕方法,但它非常接近。)@PM2Ring这是一个好问题,那么OP必须执行find并执行if语句来检查它是否是
-1
@U9 Forward是的,您可以使用
.find
而不是
.index
来避免引发异常。或者您可以捕获异常。但是对于此任务,没有必要这样做。相反,您可以使用更高效的算法thm不测试甚至不在字符串中的字母。一旦找到第一个唯一字符,您就会停止。当然,实际任务可能是找到第一个唯一小写ASCII字母的索引;OP应该澄清这一点。啊,糟糕的代码..提示:当您尝试在字母的
s
中查找索引时会发生什么
s
不包含?顺便说一句,这不是找到字符串中第一个唯一字符的最糟糕方法,但它非常接近。)@PM2Ring这是一个好问题,那么OP必须执行find并执行if语句来检查它是否是
-1
@U9 Forward是的,您可以使用
.find
而不是
.index
来避免引发异常。或者您可以捕获异常。但是对于此任务,没有必要这样做。相反,您可以使用更高效的算法thm不测试甚至不在字符串中的字母。一旦找到第一个唯一字符,您就会停止。当然,实际任务可能是找到第一个唯一小写ASCII字母的索引;OP应该澄清这一点。您应该返回索引,而不是参考字母表或字符串的字符本身本身?
s.index(l)
看起来不像是一个参考字母表,用来询问OP在我给出的示例中是否需要索引't'或'a',因为我认为有区别,但实际上是s.find(min(counter,key=counter.get))双向工作。干杯。你应该返回一个索引,而不是参考字母表本身的字符或字符串本身?
s.index(l)
看起来不像是一个参考字母表,用于询问OP在我给出的示例中是否需要索引't'或'a',因为我认为有区别,但实际上是s.find(min(counter,key=counter.get))是双向的。干杯。
class Solution:
    def firstUniqChar(self, s):
        """
        :type s: str
        """
        assert isinstance(s,str), "Please insert a valid string"
        s=s.lower()

        counter = {}
        for key in s:
             counts = s.count(key)
             if counts == 1 and key.isAlpha():
                 counter[key] = counts

     return min(counter, key=counter.get) if len(counter) > 0 else -1

sol = Solution()
print(sol.firstUniqChar('toobad'))

>t
class Solution:
    def firstUniqChar(self, s):
        """
        :type s: str
        """
        assert isinstance(s,str), "Please insert a valid string"
        s=s.lower()

        counter = {}
        for key in 'abc......':
             counts = s.count(key)
             if counts == 1:
                 counter[key] = counts

     return min(counter, key=counter.get) if len(counter) > 0 else -1

sol = Solution()
print(sol.firstUniqChar('toobad'))

>a