Объект «NoneType» не подлежит подписке?

list1 = ["name1", "info1", 10]
list2 = ["name2", "info2", 30]
list3 = ["name3", "info3", 50]
MASTERLIST = [list1, list2, list3]


def printer(lst):
    print ("Available Lists:")
    for x in range(len(lst)):
        print (lst[x])[0]

Этот код возвращает объект «NoneType» не является ошибкой подписки, когда я пытаюсь запустить

printer(MASTERLIST)

Что я сделал не так?


person user2786555    schedule 18.09.2013    source источник
comment
Ошибка, которую вы совершаете, заключается в том, что вы неправильно вызываете функцию печати пробелов, она должна быть print(list[x])[0] в соответствии с PEP8, и ваша ошибка становится более очевидной. ;)   -  person Antti Haapala    schedule 18.09.2013
comment
Хотя сообщение об ошибке отличается, это в основном та же проблема, что и NoneType не имеет атрибут "что-то"   -  person tripleee    schedule 06.11.2020


Ответы (5)


Функция print() возвращает None. Вы пытаетесь индексировать None. Нельзя, потому что 'NoneType' object is not subscriptable.

Поместите [0] в скобки. Теперь вы печатаете все, а не только первый срок.

person TerryA    schedule 18.09.2013

[0] должен быть внутри ).

person Ethan Furman    schedule 18.09.2013

Не используйте list в качестве имени переменной, поскольку оно затеняет встроенную функцию.

И нет необходимости определять длину списка. Просто повторите это.

def printer(data):
    for element in data:
        print(element[0])

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

person Matthias    schedule 18.09.2013

Точка A: не используйте список в качестве имени переменной. Точка B: вам не нужно [0] просто

print(list[x])
person Cam92    schedule 24.10.2016

Индексация, например. [0] должно находиться внутри печати...

person keremistan    schedule 25.03.2017