不能为Python函数抛出“TypeError”提供空列表

2024-09-30 10:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

函数应该打印出所有长度为n位且包含k1的位vetcor。问题是我不能给函数一个空列表作为输入。你知道吗

我正在Ubuntu上工作并使用Python3.6。我也尝试过使用像[1]这样的非空列表,但这会引发相同的错误。 当试图在函数外找到一个空列表的长度时,它会正常工作:len([])返回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()


Tags: 函数列表lenreturnifubuntudefcount
1条回答
网友
1楼 · 发布于 2024-09-30 10:26:46

因为我不局限于使用某种类型,所以我选择使用字符串而不是列表。你知道吗

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")

相关问题 更多 >

    热门问题