在Python中,如何在同一公式中使用列表列表的元素?

在Python中,如何在同一公式中使用列表列表的元素?,python,nested-lists,Python,Nested Lists,我需要在同一个公式中使用列表列表中的元素 import math def equate(A): n = len[A] sum = 0 for i in A: sum = sum + ((A[i] * math.log10(A[j]) + (1-A[i] * math.log10(1 - A[j])) loss = -1/n * sum return loss A = [[1, 0.4], [0, 0.5], [0, 0.9], [0,

我需要在同一个公式中使用列表列表中的元素

import math

def equate(A):
    n = len[A]
    sum = 0
    for i in A:
        sum = sum + ((A[i] * math.log10(A[j]) + (1-A[i] * math.log10(1 - A[j]))
    loss = -1/n * sum
    return loss

A = [[1, 0.4], [0, 0.5], [0, 0.9], [0, 0.3], [0, 0.6], [1, 0.1], [1, 0.9], [1, 0.8]]
Answer = equate(A)
print(Answer)
低于误差

File "/home/988659d072a77d5e9b58fa933c5d006f.py", line 7

loss = -1/n * sum
   ^

SyntaxError: invalid syntax

您缺少一个括号

sum = sum + ((A[i] * math.log10(A[j]) + (1-A[i] * math.log10(1 - A[j]))) 
# Missing a parenthesis at the end.
请尝试以下代码:

import math

def equate(lst:list):
    n = len(lst)
    suma = 0
    for i, j in lst:
        suma = suma + ((i * math.log10(j)) + (1-i * math.log10(1 - j)))
    loss = -1/n * suma
    return loss

A = [[1, 0.4], [0, 0.5], [0, 0.9], [0, 0.3], [0, 0.6], [1, 0.1], [1, 0.9], [1, 0.8]]
answer = equate(A)
print(answer)
我认为这就是您想要的,尽管很难说,因为
A
I
j
实际上是非信息变量名

from math import log10
from statistics import mean

def equate_one(i, j):
    return i * log10(j) + (1 - i) * log(1 - j)

def equate(A):
    return -mean(equate_one(i, j) for i, j in A)

A = [[1, 0.4], [0, 0.5], [0, 0.9], [0, 0.3], [0, 0.6], [1, 0.1], [1, 0.9], [1, 0.8]]
Answer = equate(A)
print(Answer)
  • 我认为你的括号不匹配:
    1-I*something
    1-(I*something)
    相同
  • len[A]
    将尝试索引
    len
    ,而不是获取
    A
    的长度
  • sum
    是一个内置函数,您不应该覆盖它
  • i
    在您的代码中是一个两元素列表,因此您不能执行
    a[i]
  • 正如a121所指出的,
    j
    没有定义
  • 在语法错误之前,您没有看到一行,而是漏掉了两个右括号。过度使用括号(容易导致混淆)
  • 使用标准库!如果需要某一组数字的算术平均值,请使用Python附带的
    统计信息

您忘记了
sum=sum+上的两个结束括号线性同样,不要使用
sum
。Sum是python中的一个保留字@kabooya-
sum
没有保留,但您的观点仍然有效-永远不要使用
sum
作为标识符(除非您正在对内置的
sum
函数进行猴子补丁)。
j
没有定义,您的意思是
i
?另外,您到底想做什么?不太清楚..我想如果你只编辑括号,代码将包含其他错误。