繁体   English   中英

Python 3-检查数字中的数字是否具有理解力

[英]Python 3 - Check if digit inside a number with if comprehension

目前,这适用于我要尝试执行的操作(其中“ i”是我要检查的数字是否在“数字”中):

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

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

count = [count + 1 if str(digit) in str(i)]

我已经尝试过几种不同的方法,仅使用[count + = 1 if ...]和count = [count + 1 if ...]

谁能提供对此问题的一些见解?

目前,您的操作方式没有任何问题。 只是想指出这一点。 如果您只是想在一行中做到这一点,那么也许您正在寻找解决方案。

但是要回答您的理解问题:

我想指出您在这里遇到的两个问题。

  1. 您不应尝试将其strstr来检查字符串中是否包含数字。 只需对要检查的字符使用isdigit即可

  2. 您不能以试图使用的方式来使用它。 您对理解的理解是,您正在创建一个新列表,并采用该新列表并将其分配给变量(以您的情况count )。 这样做:

    计数= [计数+ 1 ....]

确实没有多大意义。

如果您想全面理解该怎么做,应该怎么做,

遍历每个字符a字符范围,检查它是否是一个数字:

[c.isdigit() for c in a]

现在,完成上述部分。 您的单词中所有数字的列表都将为1。 下一步是要sum在一起的一切。 现在,需要注意的额外信息是,在对此调用sum时,我们将丢失方括号,因为我们将改用所谓的generator expression

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

a = "fjf7jjjf77773jf3j"


print(sum(c.isdigit() for c in a))

# outputs 7

列表理解(带有方括号)用于生成列表。 但是,就您而言,您实际上并未生成任何列表。 但是,如果您要编写内联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

我不确定在这种情况下为什么要获取列表,因为在第一个示例中,您只是增加了一个名为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM