Python空列表是否有长度?列表初始化报错及[]与[None]区别疑问
问题1解答
空列表有长度,长度固定为0,直接执行len([])即可验证输出结果为0。
问题2解答
Python的列表不支持对不存在的索引位置直接赋值:
- 你将
c初始化为空列表时,列表长度为0,没有任何合法的索引位置,循环中执行c[i] = a[i] * b[i]时,索引i从0开始就超出了列表的合法索引范围,因此抛出IndexError错误。 - 你写
c = [None] * len(a)的作用是预先创建一个和输入数组a长度完全相同的列表,每个位置的初始值为None,所有对应索引都是合法的,后续按索引赋值才不会出错。 - 至于
len([] * len("abc"))输出为0的原因:Python中列表和整数做乘法的含义是将列表元素重复对应次数,空列表不管重复多少次仍然是空列表,因此长度始终为0。
补充:如果你不想预先初始化固定长度的列表,也可以把空列表的
c用追加元素的方式实现,循环中替换成c.append(a[i] * b[i])即可正常运行,不需要提前分配位置。
问题3解答
[]是空列表,长度为0,内部没有任何元素[None]是长度为1的列表,内部存在1个元素,元素的值为Python中代表空值的特殊对象None
内容的提问来源于stack exchange,提问作者MR Li
相关产品推荐
相关产品推荐

