我在HackerRank,试图学习一些pyhton,像任何其他初学者一样,然后我来到了"集合介绍"的问题
要做的任务对我来说似乎很简单...一开始
计算机输入N,是一个整数,arr,是一个列表,你的工作是写一个代码,取arr的数,除以N。简单吧?显然,对我来说不是
我想知道:变量前面的":"到底是怎么回事?
if array[:_+1].count(array[_]) == 1:
而为什么使计数方法的工作,我搜索,并没有发现什么,我听说这是一个好地方问,那么,任何想法?
我试着在一个在线计算器中对所有数字求和,但它只会给我用自己的代码会得到的结果。
经过一些编码的尝试和错误,我来到了这个:
if len(array) != n:
print (array)
del array[len(array)]
print (array)
arr = sum(array)
print (arr)
array = arr / n
print (array)
return ('%.3f') %array
else:
print (array)
array = sum(array)
print (array)
print (array)
return ('%.3f') %(array/n)
(Yeah,我知道这很糟糕)
但显然,这还不够,因为它总是给我一个错误的答案,所以我决定在讨论选项卡中找到一些东西,我发现了这个:
def average(array):
sum_ = 0; count = 0
for _ in range(len(array)):
if array[:_+1].count(array[_]) == 1:
sum_ += array[_]
count += 1
return '%.3f' % (sum_/count,)
我试了一下,出乎意料的是,成功了!
就像...第一次尝试时
区别就像...太棒了!
0.775,差值为0.775
我的密码是168.600另一个代码是169.375
为什么
如果与此相关,我使用Visual Studio代码
我还将"_"更改为"a",以查看是否有任何更改,但没有
输入编号:
n = 10
arr = [161, 182, 161 ,154 ,176, 170, 167, 171, 170 ,174]
result = average(arr)
print(result)
对不起,我英语不好
1条答案
按热度按时间w7t8yxp51#
array[2:4]
给出了数组中的元素2和3。array[start:end]
将为您提供数组的一个 * 切片 *,从索引start
开始,在索引end
之前 * 一处停止(这意味着切片范围是左包含和右排除)。现在,有一些快捷方式,如果你省略了
start
,切片将从数组的开头开始:array[:end]
与array[0:end]
相同。如果省略end
,切片将运行到数组的末尾。所以
array[:_+1]
将给予你一个数组切片,从索引0开始,一直到索引_+1
(不包括索引_+1
),也就是说,一直到索引_
(包括索引_
)。