【发布时间】:2019-06-13 04:06:12
【问题描述】:
我遇到了list() 函数的问题。我有一个简单的课程
class Foo(object):
def __init__(self, value):
self.value = value
我正在尝试使用Foo 对象构建一个列表:
lhs = list(Foo(1))
...
rhs = list(Foo(2))
return lhs + rhs
期望的结果应该是[Foo(1), Foo(2)]。但是我需要在递归调用中使用这样的结果,所以在接下来的步骤中,这个结果成为lhs 的list() 函数的参数,我想用另一个Foo 元素附加这样的列表:
lhs = list([Foo(1), Foo(2)])
...
rhs = list(Foo(3))
return lhs + rhs
最终结果应该是[Foo(1), Foo(2), Foo(3)]。问题是list(Foo(1)) 函数引发了TypeError,因为Foo 是不可迭代的。有什么办法可以解决吗?
编辑
更好的用例:
def create_foo(value):
return Foo(value)
def concatenate(lhs, rhs):
return list(lhs) + list(rhs)
concatenate(concatenate(create_foo(1), create_foo(2)), create_foo(3))
【问题讨论】:
-
list((Foo(1),))?或者只是[Foo(1)]? -
-
@jonrsharpe 我添加了一个更好的例子。
[Foo(1)]将创建不是所需结果的嵌套列表 -
您为什么要同时将
Foo实例和Foo实例序列传递给concatenate?这似乎是个坏主意。
标签: python-3.x list