小编Har*_*ngh的帖子

TypeError:write()参数必须是str,而不是字节(Python 3 vs Python 2)

下面的代码适用于python 2.7.13

import os
with open('random.bin','w') as f:
    f.write(os.urandom(10))
Run Code Online (Sandbox Code Playgroud)

但抛出python 3 3.6.0的错误| Anaconda 4.3.0(64位)| (默认,2016年12月23日,11:57:41)[MSC v.1900 64 bit(AMD64)]

回溯(最近调用最后一次):文件"C:/Users/hsingh/Py​​charmProjects/Item3.py",第3行,在f.write中(os.urandom(10))TypeError:write()参数必须是str,不是字节

行为不同或如何解决这个问题的原因

python python-2.7 python-3.x

10
推荐指数
1
解决办法
1万
查看次数

将熊猫数据框的第一行转换为列名

我有一个熊猫数据框

   0     1     2
0  pass fail  warning
1  50    12    34
Run Code Online (Sandbox Code Playgroud)

我正在尝试将第一行转换为类似这样的列名

   pass fail  warning
0  50    12    34
Run Code Online (Sandbox Code Playgroud)

我目前正在通过重命名列名来做到这一点

 newdf.rename(columns={0: 'pass', 1: 'fail', 2:'warning'})
Run Code Online (Sandbox Code Playgroud)

然后删除第一行。任何更好的方法来做到这一点。

python pandas

9
推荐指数
2
解决办法
2万
查看次数

如何在列表中删除unicode

我想从列表中删除unicode字符串,例如机场[u'KATL',u'KCID']

预期产出

[KATL,KCID]

按照以下链接

删除字符串列表的所有元素

试过其中一个解决方案

my_list = ['this \n','是\n','a \n','list \n','\n','words \n']

map(str.strip,my_list)['this','is','a','list','of','words']

得到以下错误

TypeError:描述符'strip'需要'str'对象但收到'unicode'

python unicode

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

指针具有相同的内存地址,具有不同的值

我将内存地址从double转换为整数.即使他们指向相同的地址,为什么值不同?

#include<iostream>
using namespace std;

int main()
{
    double d = 2.5;
    auto p = (int*)&d;
    auto q = &d;
    cout<<p<<endl; // prints memory address 0x7fff5fbff660
    cout<<q<<endl; // print memory address  0x7fff5fbff660
    cout<<*p<<endl; //prints 0
    cout<<*q<<endl; // prints 2.5
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

但为什么价值不同

0x7fff5fbff660
0x7fff5fbff660
0
2.5
Program ended with exit code: 0
Run Code Online (Sandbox Code Playgroud)

c++

7
推荐指数
3
解决办法
1220
查看次数

使用模板来提高代码的抽象级别?

我正在浏览CppCoreGuidelines的T.1,并且有以下示例

例1

template<typename T>
    // requires Incrementable<T>
T sum1(vector<T>& v, T s)
{
    for (auto x : v) s += x;
    return s;
}
Run Code Online (Sandbox Code Playgroud)

例2

template<typename T>
    // requires Simple_number<T>
T sum2(vector<T>& v, T s)
{
    for (auto x : v) s = s + x;
    return s;
}
Run Code Online (Sandbox Code Playgroud)

根据上面的指南,这些例子在概念上是不好的,因为它错过了泛化的机会(受限于"可以递增"或"可以添加"的低级概念).

如何表达上述模板才能被称为良好的通用模板?

c++ cpp-core-guidelines

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

您自己的类型的结构化绑定,不是结构或元组(通过公共成员函数)

我正在经历Herb Scutter的

旅程:走向更强大,更简单的C++编程

结构绑定部分

为了理解这个概念.Best是编写一个我试过的程序,但是遇到了一些错误

只是想尝试如何在类上使用私有数据的结构绑定.请忽略下面的示例.如果您能提供任何示例

#include<iostream>
#include<string>
using namespace std;

class foobar {
public:
    foobar() { cout << "foobar::foobar()\n"; }
    ~foobar() { cout << "foobar::~foobar()\n"; }

    foobar( const foobar &rhs )
    { cout << "foobar::foobar( const foobar & )\n"; }
    void ival( int nval, string new_string ) { _ival = nval;s=new_string; }

private:
    int _ival;
    string s;
};

foobar f( int val,string new_string ) {
    foobar local;
    local.ival( val,new_string );
    return local;
}

template<> struct tuple_element<0,foobar> { using …
Run Code Online (Sandbox Code Playgroud)

c++ stdtuple c++17 structured-bindings if-constexpr

7
推荐指数
2
解决办法
1553
查看次数

在 pandas 数据框中模糊匹配两个字符串的最快方法

我有两个带有姓名列表的数据框

df1[name]   -> number of rows 3000

df2[name]   -> number of rows 64000
Run Code Online (Sandbox Code Playgroud)

我使用 fuzzy wuzzy 使用以下代码从 df2 中获取 df1 条目的最佳匹配:

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

matches = [process.extract(x, df1, limit=1) for x in df2]
Run Code Online (Sandbox Code Playgroud)

但这需要很长时间才能完成。有没有更快的方法来对 pandas 中的字符串进行模糊匹配?

python entityresolver pandas fuzzywuzzy jupyter-notebook

6
推荐指数
1
解决办法
5136
查看次数

从最大函数返回 Stepanov 笔记

max() 模板根据 Stepanov 笔记有意返回

b<a?a:b
Run Code Online (Sandbox Code Playgroud)

代替

a<b?b:a
Run Code Online (Sandbox Code Playgroud)

确保即使两个值相等但不相等,函数也能正确运行 这里的解释很少,但仍然无法理解 http://stepanovpapers.com/notes.pdf(第 63 页)

当两个值相等但不相等时,我无法想到用例

c++

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

错误:“to”不是“std::ranges”的成员

面临问题 std::ranges::to我正在执行https://en.cppreference.com/w/cpp/ranges/to 中的以下示例

#include <algorithm>
#include <concepts>
#include <iostream>
#include <ranges>
#include <vector>
 
int main()
{
    auto vec = std::views::iota(1, 5)
             | std::views::transform([](auto const v){ return v * 2; })
             | std::ranges::to<std::vector>();
 
    static_assert(std::same_as<decltype(vec), std::vector<int>>);
 
    std::ranges::for_each(vec, [](auto const v){ std::cout << v << ' '; });
}
Run Code Online (Sandbox Code Playgroud)

但出现错误

main.cpp: In function 'int main()':
main.cpp:11:29: error: 'to' is not a member of 'std::ranges'
   11 |              | std::ranges::to<std::vector>();
      |                             ^~
main.cpp:11:43: error: missing template arguments before '>' token
   11 |              | std::ranges::to<std::vector>(); …
Run Code Online (Sandbox Code Playgroud)

c++ c++23

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

为什么我们必须在箭头符号( - >)后再次指定数据类型

auto 可以推导出返回类型然后为什么我们需要尾随箭头符号( - >)来推断返回类型

#include <iostream>   
auto add (int i, int j)->int
{
    return i+j;
}
int main()
{
    int x=10,y=20;
    std::cout<<add(x,y);
 }
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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