2017-05-04 29 views
1

我有一个2d列表,比如[[1,2,3,4],[5,6,7,8,9]]。我知道我可以通过sum(a[0])得到第一行的总和。但是如果我需要总结前两个或三个项目呢?伪码应该是这样的:
sum(a[0,1:N]) == 0这意味着1求和,以行0Python中2d列表中特定范围的求和

+1

你可以使用额外的软件包吗?如果是这样的话,我建议大家看看熊猫。 – Kyle

+0

因此,如果在给定的例子中N = 3,答案将会是6?尝试:'sum(a [0] [:N])' – DSLima90

+0

我不熟悉熊猫,但我会看看它。谢谢! – MASOUD

回答

1

切片列表的列表的N个元素,需要迭代切片,不是索引

a = [[1,2,3,4],[5,6,7,8,9]] 

sum(a[0][0:3]) 

这是1 + 2 + 3(前3个元素;记得python使用半开间隔)

+1

更接近问题:'sum(a [0] [:2])'或'sum(a [0] [:3])'。 – Elmex80s

+0

好点,改变我的答案,以减少混淆 –

+0

工作得很好!谢谢! – MASOUD

1

你的问题是不明确要么要总结的一个[0] = 1 + 2 + 3 + 4 = 10

代码的第一索引即总和为上述

sum = 0 
for value in a[0]: 
    sum = sum + value 

print sum 

如果要总和所有元件直到ñ即1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45

lenth_of_array = LEN(一)

总和= 0

for i, array in enumerate(a): 
    for value in array[i]: 
     sum = sum + value 

print sum 
+0

感谢您的详细解答。 sum(a [0] [0:3])已经处理任务。 – MASOUD

1
ll = [[1,2,3,4],[5,6,7,8,9]] 

def getSum(list_index,count): 
    # list_index = index of list. 
    # count = tuple , first and last index 
    return sum(ll[list_index][count[0]:count[1]+1]) 

result = getSum(0,(1,3)) 
print(result) 

# getSum(0,(1,2)) 
# 0 = > list_index => [1,2,3,4] 
# (1,2) => element (1 to 3) => 2 + 3 + 4 = 9 
+1

这是一种矫枉过正,不是吗? –

+0

我这么认为,虽然这是一种明智的方式。 sum(a [0] [:2])已经解决了这个问题。 – MASOUD