当前位置: 首页 > 知识库问答 >
问题:

Python-三元运算符内的循环

凌蕴藉
2023-03-14

我正在学习python,并尝试使用一些三元运算符。

我正在尝试使用三元函数制作以下函数:

def array_count9(nums):
    count = 0
    for i in nums:
        if i == 9:
            count += 1
    return count

我尝试过:

def array_count9(nums):
    count = 0
    count += 1 if i == 9 for i in nums else pass
    return count

它抛出了一个语法错误,然后在四处查看后,我发现了这个错误,并更改了我的代码,以便更好地排序:

def array_count9(nums):
    count = 0
    count += 1 if i == 9 else pass for i in nums
    return count

仍在接收指向的语法错误。我也试过在不同的地方使用括号。

我环顾四周,发现还有其他相关的线程,比如这个和这个,这导致我尝试了以下方法:

def array_count9(nums):
    count = 0
    count += 1 if i == 9 else count == count for i in nums
    return count

我也通过搜索谷歌尝试了其他资源,但我不太明白。请教我。

谢谢

共有3个答案

闻人德庸
2023-03-14

好吧,使用你的例子有点棘手,因为三元运算符不能包含它特定蓝图之外的任何内容;这就是你试图通过的for循环

count += 1 if i == 9 for i in nums else pass

因此,在处理代码之后:

def array_count9(nums):
count = 0
count += 1 if i == 9 for i in nums else pass
return count

我确信你在寻找涉及三元运算符和循环的东西。所以记住你的目标,这就是我想出的。

numss = [3,6,9,10,35]

def count9(nums):
    count = 0
    a = count + 1
    for i in nums:
        count = (a if i == 9 else count) #This being the ternary operator
    return count

print (count9(numss))

希望这有帮助。

管杜吟
2023-03-14

三元运算符的蓝图是:

condition_is_true if condition else condition_is_false

出现语法错误的语句位于

count += 1 if i == 9 else pass for i in nums

iecount=1不符合蓝图规范,因为condition_is_true应该不需要评估。

林俊英
2023-03-14

我认为这是最惯用的代码编写方式:

def array_count9(nums):
    return sum(num == 9 for num in nums)

但如果要使用if/else构造,也可以这样做:

def array_count9(nums):
    return sum(1 if num == 9 else 0 for num in nums)
 类似资料:
  • 问题内容: 是否可以在Python中一行执行此操作? 我已经尝试过三元运算符: 但是我的IDE(MyEclipse)不喜欢它,没有一个。 问题答案: 是的,您可以这样做: 如果为假,则短路将开始,并且右侧将不被评估。如果为true,则将评估右侧并添加元素。 我只是指出,执行上述操作是完全非Python的,无论如何,最好编写此代码: 示范:

  • 条件(三元)运算符是 JavaScript 仅有的使用三个操作数的运算符。一个条件后面会跟一个问号(?),如果条件为 truthy ,则问号后面的表达式A将会执行;表达式A后面跟着一个冒号(:),如果条件为 falsy ,则冒号后面的表达式B将会执行。本运算符经常作为 if 语句的简捷形式来使用。(MDN) 三元运算符,也称条件运算符、三目运算符。 三元运算符可以代替简单的 if 语句。 1. 语

  • 问题内容: 是否可以更改此: …对三元运算符? 问题答案: 好吧,中的行为就像这样…… …另一种看待它的方式… 你的问题有点含糊,我们必须在这里假设。 如果(且仅当)声明了一个返回值(,等。)-现在看来似乎没有做到这一点通过你的代码-那么你可以做到这一点… 如果callFunction(…)不返回值,那么你将无法使用三元运算符!就那么简单。你将使用不需要的东西。 请发布更多代码以清除所有问题 尽管

  • 问题内容: 有人可以解释为什么这样的代码吗? 产生以下编译器错误: 不兼容的条件操作数类型ArrayList和HashSet 由于我不明白的原因,以下内容解决了该问题 我正在使用Java 1.4。 问题答案: 这是1.4 中的 错误 ,并已根据bugreport 5080917 进行了修复。 评估 这是一个错误。 xxxxx @ xxxxx 2004-07-30

  • 问题内容: 如果Python没有三元条件运算符,是否可以使用其他语言构造来模拟一个? 问题答案: 它是在2.5版中添加的。表达式语法为: 第一被评估,则恰好中的任一个a或b进行评估并返回基于所述布尔值。如果为,则被评估并返回但被忽略,否则被评估为返回但被忽略。 这允许发生短路,因为仅当评估为时才进行评估,而b根本不评估,而当为 评估时,仅当评估时就完全不评估。 例如: 注意条件是表达式,而不是语句

  • 如果Python没有三元条件运算符,是否可以使用其他语言构造来模拟一个?