通过循环中的enumarte访问索引和列表项

2024-09-22 14:39:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的嵌套列表

   list = [[1,0,0], [1,0,1], [1,1,1]]

其中,第一个列表的每个索引表示1的总和。对于索引0,得分为1;对于索引1,得分为2;对于索引3,得分为3。你知道吗

在嵌套列表中,索引中有1的每个位置都表示得分的增加。分数中的加法等于在2个嵌套列表的第一个列表中找到1的位置相同的分数。你知道吗

如果在第二个嵌套列表中,1的位置与第一个嵌套列表中的索引1一样位于索引位置0和2,则得分将增加1+3。你知道吗

我要做的是编写一个单一的或嵌套的循环,将所有分数相加,然后再加上额外的分数。 像这样的

    for i, k in enumarate(list):
      score = sum(k)
      score += sum(k[i])

Tags: in列表for分数listscoresum总和
3条回答

如果我假设你在评论中描述的分数应该是2分、6分和9分,你可以这样做:

lst = [[1,0,0], [1,0,1], [1,1,1]]
scores = [sum(l) + sum(x*sum(y) for x, y in zip(l, lst)) for l in lst]
# [2, 6, 9]

或许可以尝试使用列表理解:

alist = [[1, 0, 0], [1, 0, 1], [1, 1, 1]]

for i, k in enumerate(alist):
    score = sum(k)
    score += sum([index + 1 for (index, item) in enumerate(k) if item == 1])
    print(score)

2
6
9

你可以试试这个:

list = [[1,0,0], [1,0,1], [1,1,1]]
intermediate = [sum(i)+sum(c*(d+1) for d, c in enumerate(i)) for i in list] #for demonstration purposes
print(intermediate) #[2, 6, 9]
final_data = sum(sum(i)+sum(c*(d+1) for d, c in enumerate(i)) for i in list)

输出:

17

请注意,@schwobasegll指出最终列表的分数是9是正确的,因为根据OP的逻辑,最后的和应该是3+1+2+3=9。你知道吗

相关问题 更多 >