小编Laz*_*Cat的帖子

处理c ++中的文件映射

我需要同时写一堆文件,所以我决定使用map <string, ofstream>.

map<string, ofstream> MyFileMap; 
Run Code Online (Sandbox Code Playgroud)

我拿了一个vector<string> FileInd,包括,说"a" "b" "c",并尝试打开我的文件:

for (vector<string>::iterator it = FileInd.begin(); iter != FileInd.end(); ++it){
    ...
    MyFileMap[*it].open("/myhomefolder/"+(*it)+".");
}
Run Code Online (Sandbox Code Playgroud)

我收到了错误

request for member 'open' in ..... , which is of non-class type 'std::ofstream*'
Run Code Online (Sandbox Code Playgroud)

我试过切换到

map<string, ofstream*> MyFileMap;
Run Code Online (Sandbox Code Playgroud)

但它也没有用.

有人可以帮忙吗?

谢谢.

澄清:

我试过了两个

map<string, ofstream> MyFileMap; map<string, ofstream*> MyFileMap;

.open ->open

4种变体都不起作用.

解决方案(在Rob的代码中建议):

基本上,我忘了"新",以下为我工作:

map<string, ofstream*> MyFileMap;
MyFileMap[*it] = new ofstream("/myhomefolder/"+(*it)+".");
Run Code Online (Sandbox Code Playgroud)

c++

7
推荐指数
1
解决办法
5074
查看次数

Python 中的类初始化与实例初始化

我有点困惑为什么在Python中初始化类的实例时,我不能使用类属性。这是示例:

class TestClass:
... shared_list = ['a', 'b', 'c']
... def __init__(self):
...     self.length = len(shared_list)
Run Code Online (Sandbox Code Playgroud)

现在

>>> TestClass.shared_list
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

因此该列表在类的任何实例出现之前就存在,但是

>>> tc = TestClass()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in __init__
NameError: global name 'shared_list' is not defined
Run Code Online (Sandbox Code Playgroud)

我错过了一些简单的事情吗?

UPD:感谢大家的帮助和及时回复。我已经消除了我的困惑:类在 Python 中没有定义作用域。

python oop class

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

从字符串中解析条件

我有两个 numpy 数组 a、b 和一个以下形式的字符串s = "1.5 * b if 2*a > 7 else a + b"

我想创建一个数组 c,它将以有效的方式评估数组上的字符串。

期望行为的示例:

a = np.array([1, 4])
b = np.array([3, 1])
s = "1.5 * b if 2*a > 7 else a + b"
print(my_eval(a, b, s))

[4, 1.5]
Run Code Online (Sandbox Code Playgroud)

正在考虑类似的事情 f = np.vectorize(eval(s)); map(a, b, f)

最好的方法是什么?表达式中的数组数量可以更大(但受到合理限制。

python numpy eval python-2.7

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

对于列表中的每个元素,从不同的列表中查找最接近的日期

我有2个清单:

l1 = [ '09/12/2017', '10/24/2017' ]
l2 = [ '09/15/2017', '10/26/2017', '12/22/2017' ]
Run Code Online (Sandbox Code Playgroud)

对于l1中的每个自动收报机,我想在它之后找到距离l2最近的元素,因此输出应为

l3 = [ '09/15/2017', '10/26/2017' ]
Run Code Online (Sandbox Code Playgroud)

正确的方式似乎是以相反的顺序在两个列表上明确地并行迭代,但我希望有一个更"pythonic"的解决方案..

编辑:我确实想要一个最佳复杂性解决方案,(假设列表已排序),我认为是O(max(len(l1),len(l2))).

python list

4
推荐指数
1
解决办法
156
查看次数

标签 统计

python ×3

c++ ×1

class ×1

eval ×1

list ×1

numpy ×1

oop ×1

python-2.7 ×1