Python3-使用if理解检查数字中的if数字

Python3-使用if理解检查数字中的if数字,python,python-3.x,Python,Python 3.x,这目前适用于我正在尝试做的事情(其中“I”是我正在检查的数字,看看它是否在“数字”中): 但是,当我尝试使用if理解时,我得到了一个无效语法: count = [count + 1 if str(digit) in str(i)] 我尝试了几种不同的方法,只使用了[count+=1 if…]和[count=[count+1 if…] 有人能提供一些关于这个问题的见解吗?目前您的做法没有任何问题。我只想指出这一点。若你们只是想在一行中做到这一点,也许解决方案就是你们所寻找的 但要回答您的理解问题

这目前适用于我正在尝试做的事情(其中“I”是我正在检查的数字,看看它是否在“数字”中):

但是,当我尝试使用if理解时,我得到了一个无效语法:

count = [count + 1 if str(digit) in str(i)]
我尝试了几种不同的方法,只使用了[count+=1 if…]和[count=[count+1 if…]


有人能提供一些关于这个问题的见解吗?

目前您的做法没有任何问题。我只想指出这一点。若你们只是想在一行中做到这一点,也许解决方案就是你们所寻找的

但要回答您的理解问题:

这里有两个问题,我想指出

  • 您不应该通过将字符串转换为
    str
    来检查字符串中是否有数字。只需针对正在检查的字符使用

  • 你不能以你试图使用理解的方式来使用它。关于理解,您必须了解的是,您正在创建一个新列表,并获取该新列表并将其分配给一个变量(在您的例子中是
    count
    )。这样做:

    计数=[计数+1….]

  • 真的没有多大意义去做

    如果你想在理解中做到这一点,你应该做什么

    迭代
    a
    中的每个字符,检查每个字符是否为数字:

    [c.isdigit() for c in a]
    
    现在,完成上述部分。您将有一个单词中所有数字的1列表。下一步是将所有内容相加。现在,需要注意的额外信息是,在调用
    sum
    时,我们将丢失方括号,因为我们将使用所谓的a

    所以,说了这么多,做了这么多。您的最终解决方案是:

    a = "fjf7jjjf77773jf3j"
    
    
    print(sum(c.isdigit() for c in a))
    
    # outputs 7
    

    你现在做这件事的方式没有任何问题。我只想指出这一点。若你们只是想在一行中做到这一点,也许解决方案就是你们所寻找的

    但要回答您的理解问题:

    这里有两个问题,我想指出

  • 您不应该通过将字符串转换为
    str
    来检查字符串中是否有数字。只需针对正在检查的字符使用

  • 你不能以你试图使用理解的方式来使用它。关于理解,您必须了解的是,您正在创建一个新列表,并获取该新列表并将其分配给一个变量(在您的例子中是
    count
    )。这样做:

    计数=[计数+1….]

  • 真的没有多大意义去做

    如果你想在理解中做到这一点,你应该做什么

    迭代
    a
    中的每个字符,检查每个字符是否为数字:

    [c.isdigit() for c in a]
    
    现在,完成上述部分。您将有一个单词中所有数字的1列表。下一步是将所有内容相加。现在,需要注意的额外信息是,在调用
    sum
    时,我们将丢失方括号,因为我们将使用所谓的a

    所以,说了这么多,做了这么多。您的最终解决方案是:

    a = "fjf7jjjf77773jf3j"
    
    
    print(sum(c.isdigit() for c in a))
    
    # outputs 7
    

    我不确定在这种情况下为什么要获取列表,因为在第一个示例中,您只是简单地增加了一个名为
    count
    的整数变量。如果您正在寻找更细致的内容,可以尝试使用以下函数:

    def count_letter_instance(string="", letter=""):
        return sum([1 for x in string if x == letter])
    
    print(count_letter_instance("hello hello hello", "h"))
    print(count_letter_instance("cat cat cat", "c"))
    
    输出:

    3
    3
    

    我不确定在这种情况下为什么要获取列表,因为在第一个示例中,您只是简单地增加了一个名为
    count
    的整数变量。如果您正在寻找更细致的内容,可以尝试使用以下函数:

    def count_letter_instance(string="", letter=""):
        return sum([1 for x in string if x == letter])
    
    print(count_letter_instance("hello hello hello", "h"))
    print(count_letter_instance("cat cat cat", "c"))
    
    输出:

    3
    3
    
    列表理解(带方括号)用于生成列表。但是,在您的情况下,您并没有真正生成任何列表。但是,如果您试图编写内联if,请尝试-

    count = count + 1 if str(digit) in str(i) else count
    
    列表理解(带方括号)用于生成列表。但是,在您的情况下,您并没有真正生成任何列表。但是,如果您试图编写内联if,请尝试-

    count = count + 1 if str(digit) in str(i) else count
    

    您可以将
    character.isdigit()
    中的布尔值相加,其中character是字符串中的每个字符

    考虑:

    >>> s='abc123def456'
    >>> [c.isdigit() for c in s]
    [False, False, False, True, True, True, False, False, False, True, True, True]
    >>> sum(c.isdigit() for c in s)
    6
    

    您可以将
    character.isdigit()
    中的布尔值相加,其中character是字符串中的每个字符

    考虑:

    >>> s='abc123def456'
    >>> [c.isdigit() for c in s]
    [False, False, False, True, True, True, False, False, False, True, True, True]
    >>> sum(c.isdigit() for c in s)
    6
    

    你想对理解做些什么?在第一种情况下,
    count
    是一个
    int
    。第二个
    count
    将是一个
    列表
    。他们不一样,所以不清楚你想做什么。。您实际上想做什么?在第一个示例中,您增加了
    count
    ,这是一个整数,但在第二个示例中,您尝试返回
    count
    ,这是一个列表。为什么要在整数上使用一个列表?理解创建列表,我知道你想用它,但这不是语法的工作方式。阅读Kupiakos发布的文章。我注意到你写了“使用if理解”。。。“如果理解”在Python中不是一件事。。。你指的是一个内联if语句,比如str(i)else count中的
    count=count+1 if str(digit)
    ?你想如何理解?在第一种情况下,
    count
    是一个
    int
    。第二个
    count
    将是一个
    列表
    。他们不一样,所以不清楚你想做什么。。您实际上想做什么?在第一个示例中,您增加了
    count
    ,这是一个整数,但在第二个示例中,您尝试返回
    count
    ,这是一个列表。为什么要在整数上使用一个列表?理解创建列表,我知道你想用它,但这不是语法的工作方式。阅读Kupiakos发布的文章。我注意到你写了“使用if理解”。。。“如果”压缩