不能给 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")
该函数应该打印出所有 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")