在下面给出的代码中,我编写了两个函数。第二个应用第一个功能。我试图看看是否有可能对第一个函数的元素进行迭代。
这是代码:
regex
我想要的结果是def numbers(n):
for m in range(n):
print(m)
def sets(n):
r=[]
for e in numbers(n):
r.append([e])
return r
sets(6)
。
我知道还有其他方法(未定义函数)来获取从0到[[0], [1], [2], [3], [4], [5]]
的所有数字,但是对于我开发的实际代码,这与我要解决的问题有关
我收到的错误消息是:
m-1
答案 0 :(得分:1)
def numbers(n):
#for m in range(n):
# print(m)
return range(n)
def sets(n):
r=[]
for e in numbers(n):
r.append([e])
return r
print(sets(6))
输出:
[[0], [1], [2], [3], [4], [5]]
Pythonic解决问题的方法如下-一根衬里
def create_list(n):
return [[x] for x in range(n)] # Important one liner
print(create_list(5))
答案 1 :(得分:1)
返回无,因为您无法遍历无。这意味着什么也没找到。这可能会解决问题
def sets(n):
r=[]
for e in numbers(n) or []:
r.append([e])
return r
print(sets(6))
此外,请在第一部分尝试
def numbers(n):
return range(n)
答案 2 :(得分:1)
您的numbers
函数除了打印输入外,对输入不执行任何操作。不幸的是,打印不会在功能本身之外产生副作用。您可以使用许多修复程序。
最Python的方法是构建生成器,而不是常规函数:
def numbers(n):
for m in range(n):
yield m
或更简单地
def numbers(n):
yield from range(n)
效率高得多,但只要正确返回即可构造整个可迭代对象的有效性:
def numbers(n):
value = []
for m in range(n):
value.append(m)
return value
或更有效地:
def numbers(n):
value = [m for m in range(n)]
return value
或琐碎
def numbers(n):
return range(n)