我环顾四周但一直无法找出我的代码失败的原因,以及如何正确执行。我是新的(3天)编码,所以原谅我的noobishness。
我从一个整数列表开始,基本上我想创建一个新的或更新的列表,其中新列表的第一个索引具有值=原始列表的前10个值的总和(0-10),并且那么新列表的第二个索引的值=原始列表的(1-11)索引值的总和。
问题在于它错误地添加了所有内容,并且使我无法弄清楚模式。
这就是我所拥有的:
def sum_range(filename, grouping = 10):
"""sums up the ss values for 'groupings' numbers of indices.
Shows ALL results, regardless of how high or low strandedness is"""
sslist = ssc_only(filename)
# "ssc_only(filename)" takes my input and returns it as a list of int,
# which I want to use for this function
sslist = [sum(sslist[i:i+grouping]) for i in sslist]
return sslist
答案 0 :(得分:3)
我想你可能想要for i in range(len(sslist))
(如果你担心内存消耗,请在python 2中使用xrange
而不是range
。)
lstlen=len(sslist)
sslist = [sum(sslist[i:min(i+grouping,lstlen)]) for i in range(lstlen)]
您正在循环列表项目而不是列表索引
当然,你的最后10个元素将是少于10个元素的总和。由于我不知道你想对这些元素做什么,我会留给你弄清楚你想用它们做些什么。
答案 1 :(得分:0)
不要认为你的求和是正确的......如果你正在制作10个小组,你将比原始列表少10个样本 - 这会在下面的表达式中给出len(r) - 10
。 / p>
>>> r = range(20)
>>> r
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> [sum(r[n:10+n]) for n in range(len(r)-10)]
[45, 55, 65, 75, 85, 95, 105, 115, 125, 135]