【问题标题】:'NoneType' object is not subscriptable?“NoneType”对象不可下标?
【发布时间】:2013-09-22 21:12:39
【问题描述】:
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)

我做错了什么?

【问题讨论】:

  • 你犯的错误是你的空白打印函数调用错误,根据PEP8应该是print(list[x])[0],你的错误变得更加明显。 ;)
  • 虽然报错信息不一样,但这基本上是和NoneType has no attribute 'something'一样的问题

标签: python python-3.x nonetype


【解决方案1】:

print() 函数返回None。您正在尝试索引无。你不能,因为'NoneType' object is not subscriptable

[0] 放在括号内。现在您正在打印所有内容,而不仅仅是第一个学期。

【讨论】:

    【解决方案2】:

    [0] 需要在 ) 内。

    【讨论】:

      【解决方案3】:

      不要使用list 作为变量名,因为它会影响内置函数。

      并且不需要确定列表的长度。只需对其进行迭代。

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

      只是一个附录:查看内部列表的内容,我认为它们可能是错误的数据结构。您似乎想改用字典。

      【讨论】:

        【解决方案4】:

        A 点:不要使用列表作为变量名 B点:你不需要[0]只是

        print(list[x])
        

        【讨论】:

          【解决方案5】:

          索引例如[0] 应该出现在打​​印内部...

          【讨论】:

            【解决方案6】:
            list1 = ["name1", "info1", 10]
            list2 = ["name2", "info2", 30]
            list3 = ["name3", "info3", 50]
            
            def printer(*lists):
                for _list in lists:
                    for ele in _list:
                        print(ele, end = ", ")
                    print()
            
            printer(list1, list2, list3)
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-11-10
              • 2015-01-23
              • 2022-01-12
              • 2012-01-13
              相关资源
              最近更新 更多