python列表' NoneType'错误

时间:2017-06-03 03:57:56

标签: list python-3.x

我正在尝试拆分列表并将它们复制到2个单独的列表中,我得到: " TypeError:' NoneType'对象不是可订阅的"

class example(object):
      def ex(self,nums):
             n = int(len(nums)/2)
             nums1 = nums[:n]
             nums2 = nums[n:]

1 个答案:

答案 0 :(得分:1)

您是否确认nums确实是一个列表并且n的值是?如果您能够提供该代码以便用户可以提供更好的帮助,将来会很有用。

此外,我不确定复制和粘贴代码时是否只是一个错误,但如果它在同一行上则不起作用。

顺便说一下, python使用None而不是null ,这就是@Jeff Mercado在评论中提到这一点的原因。

我有适用的示例代码:

nums = [1, 2, 3, 4]
n = 2

nums1 = nums[:n]
nums2 = nums[n:]

print(nums1)
print(nums2)

Output:
[1, 2]
[3, 4]

编辑以检查列表是否为空

隐式检查(PEP 8推荐方式):

if not nums:
    print("Nums is empty")

明确检查(但在python中这是不赞成的):

if len(nums) == 0:
    print("Nums is empty")

有关内置not type的更多信息,请参阅python 2.x的文档here和python 3.x的here

再次编辑,现在您已完全编辑了初始问题..

class Example(object):

    def ex(self, nums):
        # Either use an if check or try/except
        if not nums:
            print("Nums is empty")

        try:
            n = int(len(nums) / 2)
            nums1 = nums[:n]
            nums2 = nums[n:]

            print(n)
            print(nums1)
            print(nums2)
        except TypeError:
            print("Exception: You would put your exception code here")


example = Example()

num_list1 = [1, 2, 3, 4]
example.ex(num_list1)

num_list2 = []
example.ex(num_list2)

num_list3 = None
example.ex(num_list3)

输出:

2
[1, 2]
[3, 4]
Nums is empty
0
[]
[]
Nums is empty
Exception: You would put your exception code here

其他建议:
1.要遵守常规惯例,请将您的班级名称大写。这有助于将其与普通函数调用和对象实例化区分开来。