小编che*_*fin的帖子

如何将字符串处理为子列表层

这是示例表单,稍后我将尝试用文字解释.我有一个打破字符串的列表......

[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很新,所以我不太熟悉数据结构和迭代器工具.

python recursion list sublist

8
推荐指数
1
解决办法
436
查看次数

在类中存储指针或对象?

只是一个设计/优化问题.什么时候存储指针或对象?为什么?例如,我相信这两个工作(除了编译错误):

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:我应该存储整个对象,还是指向对象的指针?

谢谢!

c++ pointers class object move-semantics

5
推荐指数
3
解决办法
4614
查看次数

Python检查__init__参数

在过去的几个小时里,我一直在试图解决这个问题,我即将放弃.

你如何确保在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++,另一个不回答我的问题.

检查构造函数参数

如何基于参数类型重载__init__方法?

python parameters class init

5
推荐指数
1
解决办法
4339
查看次数

标签 统计

class ×2

python ×2

c++ ×1

init ×1

list ×1

move-semantics ×1

object ×1

parameters ×1

pointers ×1

recursion ×1

sublist ×1