我正在尝试拆分列表并将它们复制到2个单独的列表中,我得到: " TypeError:' NoneType'对象不是可订阅的"
class example(object):
def ex(self,nums):
n = int(len(nums)/2)
nums1 = nums[:n]
nums2 = nums[n:]
答案 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.要遵守常规惯例,请将您的班级名称大写。这有助于将其与普通函数调用和对象实例化区分开来。