这是示例表单,稍后我将尝试用文字解释.我有一个打破字符串的列表......
说
[a, a, a, b, a, a, b, a, c, a, b, a, a, c, a, c, a]
Run Code Online (Sandbox Code Playgroud)
其中b是标准1,c是标准2
我想把它分成这样的列表:
[a, a, a, [b, a, a, [b, a, c], a, [b, a, a, c], a, c], a]
Run Code Online (Sandbox Code Playgroud)
所以我想处理字符串,这样当我浏览它时,如果项目符合条件1,则打开一个新列表,如果项目符合条件2,则关闭列表并返回上面的一个级别.
我试过做这样的事情,但效果并不好.
def sublist(self, l):
for line in list:
if not b:
self.data.append(line)
else:
sublist(l[line:]) #<----- not sure how to recurse it.
Run Code Online (Sandbox Code Playgroud)
我在stackoverflow之前看到了将列表分成相同大小的列表,但没有一个使用一组条件进入子列表.
我对python很新,所以我不太熟悉数据结构和迭代器工具.
只是一个设计/优化问题.什么时候存储指针或对象?为什么?例如,我相信这两个工作(除了编译错误):
class A{
std::unique_ptr<Object> object_ptr;
};
A::A():object_ptr(new Object()){}
class B{
Object object;
};
B::B():object(Object()){}
Run Code Online (Sandbox Code Playgroud)
我相信在堆栈或堆上实例化时会出现一个区别?
例如:
int main(){
std::unique_ptr<A> a_ptr;
std::unique_ptr<B> b_ptr;
a_ptr = new A(); //(*object_ptr) on heap, (*a_ptr) on heap?
b_ptr = new B(); //(*object_ptr) on heap, object on heap?
A a; //a on stack, (*object_ptr) on heap?
B b; //b on stack, object on stack?
}
Run Code Online (Sandbox Code Playgroud)
还sizeof(A)应该< sizeof(B)?我还有其他问题吗?(丹尼尔在评论中提醒我关于他的相关帖子中的继承问题)
因此,由于堆栈分配通常比堆分配快,但A的大小比B小,这些权衡中的哪一个如果没有在有问题的情况下测试性能,即使使用移动语义也无法回答?或者一些拇指规则当使用一个比另一个更有利时?(San Jacinto纠正了我关于堆栈/堆分配更快,而不是堆栈/堆)
我猜想更多的复制构建会导致相同的性能问题,(3个副本将比启动第一个实例的性能大约3倍).但是移动构造可能更有利于尽可能多地使用堆栈???
这是一个相关的问题,但不完全相同. C++ STL:我应该存储整个对象,还是指向对象的指针?
谢谢!
在过去的几个小时里,我一直在试图解决这个问题,我即将放弃.
你如何确保在python中只有匹配的特定条件才能创建对象?
例如,假设我想创建一个Hand对象,并且只有在初始化程序中有足够的Fingers时才初始化Hand?(请以此为例进行比喻)
说,
class Hand:
def __init__(self, fingers):
# make sure len(fingers)==5, and
#only thumb, index, middle, ring, pinky are allowed in fingers
pass
Run Code Online (Sandbox Code Playgroud)
谢谢.
这些是我发现的最接近的问题,但一个是C++,另一个不回答我的问题.