Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Sum - Fatal编程技术网

Python 如何更好地编写这些函数以使其有意义

Python 如何更好地编写这些函数以使其有意义,python,list,sum,Python,List,Sum,我打算写一个函数,我可以用它来总结一个有两位数字的列表中的所有数字。例如: a=[1,2,11,100,10] should return 21 since 11 and 10 of the list are having two digits 我还希望数字的范围为(0,1,2,…100000) 但我试过这些: q= [1, 1000, 80, -91] WRONG ANSWER (got 80 expected -11) 请告诉我怎么做,为什么失败。为什么这么难?您可以简单地使用带过滤器

我打算写一个函数,我可以用它来总结一个有两位数字的列表中的所有数字。例如:

a=[1,2,11,100,10]

should return 21 since 11 and 10 of the list are having two digits
我还希望数字的范围为(0,1,2,…100000)

但我试过这些:

q= [1, 1000, 80, -91]
WRONG ANSWER (got 80 expected -11)

请告诉我怎么做,为什么失败。

为什么这么难?您可以简单地使用带过滤器的生成器,并将该生成器传递给
sum(..)
builtin。比如:

def solution(A):
    return sum(x for x in A if -100 < x < -9 or 9 < x < 100)
无需声明额外的数组(只会消耗内存)


if中的
是一个生成器:如果
满足
的要求,它会通过在
上为
中的每个元素应用
惰性地生成一个数字序列。

为什么这么难?您可以简单地使用带过滤器的生成器,并将该生成器传递给
sum(..)
builtin。比如:

def solution(A):
    return sum(x for x in A if -100 < x < -9 or 9 < x < 100)
无需声明额外的数组(只会消耗内存)


if
中的
是一个生成器:如果满足
的要求,它会通过在
上为
中的每个元素应用
来惰性地生成一个数字序列。

您正在检查大于9且小于100的数字。试试这个:

如果整数>9且整数-100且整数<-9:


您正在检查大于9且小于100的数字。试试这个:

如果整数>9且整数-100且整数<-9:

试试这个

print sum(filter(lambda x: (x<100 and x>9) or (x>-100 and x<-9), a))
打印总和(滤波器(λx:(x9)或(x>-100和x试试这个

print sum(filter(lambda x: (x<100 and x>9) or (x>-100 and x<-9), a))

打印总和(过滤器(λx:(x9)或(x>-100和x请使用此更新脚本

def solution(A):
    for integer in A:
        if (integer > 9 and integer < 100) or (integer > -100 and integer < -9):
            two_digits_array.append(integer)
    return sum( two_digits_array )
def溶液(A):
对于A中的整数:
如果(整数>9和整数<100)或(整数>100和整数<9):
两位数数组。追加(整数)
返回和(两位数数组)

请使用此更新的脚本

def solution(A):
    for integer in A:
        if (integer > 9 and integer < 100) or (integer > -100 and integer < -9):
            two_digits_array.append(integer)
    return sum( two_digits_array )
def溶液(A):
对于A中的整数:
如果(整数>9和整数<100)或(整数>100和整数<9):
两位数数组。追加(整数)
返回和(两位数数组)
您可以使用len()计算位数:

ans=0
for i in a:
    if(len(str(abs(i)))==2:
        ans+=i
return ans
您可以使用len()计算位数:

ans=0
for i in a:
    if(len(str(abs(i)))==2:
        ans+=i
return ans


您可以使用
abs
使constaint shorterWonder与
len(str(x))进行比较==2
,可能转换为str的速度较慢,但由于链接的原因,还不确定……你的答案很好,但问题似乎是关于某人的家庭作业。在我看来,只提供一些工作代码并不是最好的主意。@Chris_Rands:通常转换为字符串确实相当昂贵。此外,
-10
将需要
len('-10')==3
@Chris_Rands:在链式运算中,表达式只计算一次。因此Python只计算
abs(x)
一次,将其存储在累加器中,并对结果执行两个条件,正如所写的那样。您可以使用
abs
使constant缩短到如何与
len(str(x))进行比较==2
,可能转换为str的速度较慢,但由于链接的原因,还不确定……你的答案很好,但问题似乎是关于某人的家庭作业。在我看来,只提供一些工作代码并不是最好的主意。@Chris_Rands:通常转换为字符串确实相当昂贵。此外,
-10
将需要
len('-10')==3
@Chris\u Rands:在链接中,表达式只计算一次。因此Python计算
abs(x)
仅一次,将其存储在累加器中,并对结果执行两个条件(如所写)。看起来-10到-99之间的数字也被视为有两位数字。因此,在for循环中,您必须检查:“如果整数>9且整数<100或整数<9且整数>100”看起来-10到-99之间的数字也被认为有两个数字。因此,在for循环中,您必须检查:“如果整数>9且整数<100或整数<9且整数>100”感谢…寻求我的帮助..我非常感激…感谢…寻求我的帮助..我非常感激..我现在寻求我的帮助..我非常感激逻辑是正确的,但是为什么要编写一个函数并创建额外的开销,而不是使用builtins@binayr-不是阿尔瓦Y关于使用内置方法和一行程序。如果问题作者要求家庭作业帮助(看起来是什么样子),那么帮助修复其代码比只提供答案而不做任何解释要好。我非常不喜欢“这是我的代码,它只是工作,用这个”的答案逻辑是正确的,但为什么要编写一个函数并产生额外的开销呢?相反,使用builtins@binayr-这并不总是关于使用内置方法和一行程序。如果问题作者请求家庭作业帮助(看起来是什么样子)那么,帮助修复代码比只提供一个没有任何解释的答案要好。我非常不喜欢“这是我的代码,它只是工作,使用这个”的答案。如果你帮助别人改进,你真的能帮助他。