它返回的原因None
仅仅是因为你的return
语句缺少一个表达式:
elif len(value) == 8: return
因此return
只是意味着:" 我们已经完成,停止执行此功能,不应返回任何内容 ".
此外,并非所有代码路径都会执行返回语句.最后,你AddZero
似乎只添加一个零,这可能是低效的.
更好的解决方案可能是:
def Addzero(value): return [0] * max(0,8-len(value)) + value
这里的表达式[0]*n
意味着您在列表中重复0
n次.所以[0]*4
会导致[0,0,0,0]
.现在我们需要添加它的次数是max(0,8-len(value))
.该max(0,...)
其实甚至没有必要的,这样你就可以把它改写为:
def Addzero(value): return [0] * (8-len(value)) + value
因此,这意味着我们必须缩短以生成八个项目列表的元素的数量被构造为零列表.我们添加(追加)+
原始列表.
正如@ Later42在他的回答中所示,你可以通过len
先检查来提高效率,如果它等于8,则返回列表本身:
def Addzero(value): if(len(value) > 8) : return value else : return [0] * (8-len(value)) + value
使用Python的交互式shell进行演示:
$ python Python 2.7.9 (default, Apr 2 2015, 15:33:21) [GCC 4.9.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> def Addzero(value): ... return [0] * (8-len(value)) + value ... >>> Addzero([1, 0, 1, 1, 0, 1]) [0, 0, 1, 0, 1, 1, 0, 1]