不能给 Python 函数抛出一个空列表 "TypeError"

Can not give an empty list to Python function throws "TypeError"

该函数应该打印出所有 n 位长且包含 k 个 1 的位向量。问题是我不能给一个空列表作为函数的输入。

我正在开发 Ubuntu 并使用 Python 3.6。我也尝试过使用像 [1] 这样的非空列表,但这会引发相同的错误。 当试图在函数之外查找空列表的长度时,它会按预期工作:len([]) returns 0.

这是我的代码:

def bitvector(n, k, vektor):
    if len(vektor) == n:
        if vektor.count(1) == k:
            print(vektor)
    bitvector(n, k, vektor.append(0))
    bitvector(n, k, vektor.append(1))


bitvector(1, 2 , [])

编辑:

def bitvector(n, k, vektor):
    if len(vektor) > n:
        return
    if len(vektor) == n:
        print("test")
        if vektor.count(1) == k:
            print(vektor)
            return
    bitvector(n, k, vektor.append(1))
    bitvector(n, k, vektor.append(0))


bitvector(1, 2 , [])

它应该获取列表的长度,但它却抛出以下错误:

TypeError: 'NoneType' 类型的对象没有 len()

由于我不限于使用某种类型,所以我选择使用字符串而不是列表。

def bitvector(n, k, vektor):
    vektor_list = list(vektor)
    if len(vektor) > n:
        return
    if len(vektor) == n:
        if vektor_list.count("1") == k:
            print(vektor)
            return
    bitvector(n, k, vektor + "0")
    bitvector(n, k, vektor + "1")

编辑,优化了我的代码:

def bitvector(n, k, vektor):
vektor_list = list(vektor)
if vektor_list.count("1") > k:
    return
if len(vektor) == n:
    if vektor_list.count("1") == k:
        print(vektor)
        return
    else:
        return
bitvector(n, k, vektor + "0")
bitvector(n, k, vektor + "1")