TypeError: объект 'type' не подходит для eval () - PullRequest
0 голосов
/ 27 января 2020
def check(positions):
  final = []
  n = len(positions)

  #positions is a list of lists. So now we'll break this into individual lists
  #creating n empty lists

  lists = [[] for _ in range(n)]

  cond =""                             #empty string to create condition

  #fetching lists from list of lists
  for k in range(n):
    lists[k]=positions[k]

  #computation work starts here

  for i in lists[0]:
    for j in range(1,n-1):
      cond+= 'i+j in list[j] and '
    cond+='i+n-1 in list[n-1]'

    for i in lists[0]:
     for j in range(1,n-1):
      if(eval(cond)):
        final.append(i)

  return final

Я получаю сообщение об ошибке "TypeError: 'type' iscripts" в строке, содержащей "if (eval (cond)):". Пожалуйста, объясните, где я иду не так.

1 Ответ

1 голос
/ 27 января 2020

Проблема в том, что у вас нет никакой переменной с именем list, поэтому Python предполагает, что вы ссылаетесь на тип list (воспринимайте «тип» как «тип данных», такой как int, * 1004). *, et c ..).

Я полагаю, вы хотели использовать i[j] вместо list[j] в вашей строке cond. В этом случае замените list[j] на i[j], и это должно быть сделано.

for i in lists[0]:
    for j in range(1,n-1):
        cond+= 'i+j in i[j] and '
    cond+='i+n-1 in i[n-1]'

Примечание: Вы не должны вызывать переменную list, так как может конфликтовать с типом данных Python list и создавать беспорядок.

...