Python3-使用if理解检查数字中的if数字
这目前适用于我正在尝试做的事情(其中“I”是我正在检查的数字,看看它是否在“数字”中): 但是,当我尝试使用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…] 有人能提供一些关于这个问题的见解吗?目前您的做法没有任何问题。我只想指出这一点。若你们只是想在一行中做到这一点,也许解决方案就是你们所寻找的 但要回答您的理解问题
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理解”。。。“如果”压缩