C++でPythonを学ぶ
4196 ワード
C++は近年Pythonを「パクリ」し始めたのかと勝手に言います.私はC++でPythonを勉強しているとしか言えません.
信じない?私について勉強しに来たの?
字面量
Pythonは2.6バージョンでバイナリを字面量として1をサポートしていたが、最近はC++14が成熟し、2:
ましてやPythonは1.5時代にraw string literalsの概念があったのは言うまでもありません3、私たちのC++も遅くはありません.C++11にも似たような方法があります.
Pythonがforループを書くのはとても楽しいことです.
皆さんご存知のように、C++11で私もやっと同じことができました.
タイプ自動導出
Pythonには本当にタイプの概念がありますか?(笑)
C++11もこの技を学んだが、おばあさんの巻き布(auto)を残しただけだ.
メタグループ
Pythonの元組(tuple)はうらやましくてたまらない.Pythonは最初からあった.
はい、C++11で猫の虎を描きます.
Pythonは大きいほうがいいと言われていますが、逆方向に変数に解析できますね.
ふん、C++じゃだめなの?
Lists
Pythonでは、Listsは内蔵タイプ4で、listを作成するのは簡単です.
以前は何があったのか、std::vectorは悪くなくてもできると言っていました.しかし、Python粉は本物ですが、上記のように初期化できますか?この話はBjarne Stroustrupのお父さんに聞いて、ひそかに恥ずかしくて、そこでC++11の中でinitializerを作りましたlistは5に応答した.
しかし、PythonでDictionaryを作るのは簡単で何と同じだと言われています.
カット、C++自体にmapタイプがあり、今またハッシュテーブルunordered_が増えました.map、もっと似ています:
Lambda式
Pythonは大神器を祭って、1994年にあったLambdaの表現:
C++11は拙劣な真似を始めました:
std::sort(mylist.begin(), mylist.end(), [](int x, int y){ return std::abs(x) < std::abs(y); }); Pythonは2001年にNested Scopesの技術を導入した.
C++11は弱音を吐かず,capture-listの概念8をまとめた.
組み込みアルゴリズム
Pythonにはfilterのような強力なアルゴリズム関数が内蔵されています.
result=filter(mylist,lambda x:x>=0)C++11でもstd::copy_if同じことをする:
このような関数はしばしば見られ、Pythonのある機能と遠隔的に呼応している.transform,any_of, all_of, min, max.
可変パラメータ
Pythonは最初から可変パラメータをサポートしています.変数パラメータの関数を定義することができます.個数は不確定でも、タイプは異なります.
C++11里initializer_Listは、同じタイプの個数可変パラメータ(C++Primer 5 th 6.2.6)をサポートすることができる.
ここを見て、C++でPythonを勉強するのも素晴らしい方法だと思いますか?この質問の答えから、@Milo Yipも同じ道の中の人だとわかりますね.
続行
いいと思う?こぶしを広げたい?このrepoを見てみましょう.C++でPythonを学ぶ方法をもっと教えてあげます.
信じない?私について勉強しに来たの?
字面量
Pythonは2.6バージョンでバイナリを字面量として1をサポートしていたが、最近はC++14が成熟し、2:
static const int primes = 0b10100000100010100010100010101100;
ましてやPythonは1.5時代にraw string literalsの概念があったのは言うまでもありません3、私たちのC++も遅くはありません.C++11にも似たような方法があります.
const char* path = r"C:\Python27\Doc";
Range Loop
Pythonがforループを書くのはとても楽しいことです.
for x in mylist:
print(x);
皆さんご存知のように、C++11で私もやっと同じことができました.
for (int x : mylist)
std::cout << x;
タイプ自動導出
Pythonには本当にタイプの概念がありますか?(笑)
x = "Hello World"
print(x)
C++11もこの技を学んだが、おばあさんの巻き布(auto)を残しただけだ.
auto x = "Hello World";
std::cout << x;
メタグループ
Pythonの元組(tuple)はうらやましくてたまらない.Pythonは最初からあった.
triple = (5, "Hello", True)
print(triple[0])
はい、C++11で猫の虎を描きます.
auto triple = std::make_tuple(5, "hello", true);
std::cout << std::get<0>(triple);
Pythonは大きいほうがいいと言われていますが、逆方向に変数に解析できますね.
x, y, z = triple
ふん、C++じゃだめなの?
std::tie(x, y, z) = triple;
Lists
Pythonでは、Listsは内蔵タイプ4で、listを作成するのは簡単です.
mylist = [1, 2, 3, 4]
mylist.append(5);
以前は何があったのか、std::vectorは悪くなくてもできると言っていました.しかし、Python粉は本物ですが、上記のように初期化できますか?この話はBjarne Stroustrupのお父さんに聞いて、ひそかに恥ずかしくて、そこでC++11の中でinitializerを作りましたlistは5に応答した.
auto mylist = std::vector{1,2,3,4};
mylist.push_back(5);
しかし、PythonでDictionaryを作るのは簡単で何と同じだと言われています.
myDict = {5: "foo", 6: "bar"}
print(myDict[5])
カット、C++自体にmapタイプがあり、今またハッシュテーブルunordered_が増えました.map、もっと似ています:
auto myDict = std::unordered_map{ { 5, "foo" }, { 6, "bar" } };
std::cout << myDict[5];
Lambda式
Pythonは大神器を祭って、1994年にあったLambdaの表現:
mylist.sort(key = lambda x: abs(x))
C++11は拙劣な真似を始めました:
std::sort(mylist.begin(), mylist.end(), [](int x, int y){ return std::abs(x) < std::abs(y); }); Pythonは2001年にNested Scopesの技術を導入した.
def adder(amount):
return lambda x: x + amount
...
print(adder(5)(5))
C++11は弱音を吐かず,capture-listの概念8をまとめた.
auto adder(int amount) {
return [=](int x){ return x + amount; };
}
...
std::cout << adder(5)(5);
組み込みアルゴリズム
Pythonにはfilterのような強力なアルゴリズム関数が内蔵されています.
result=filter(mylist,lambda x:x>=0)C++11でもstd::copy_if同じことをする:
auto result = std::vector{};
std::copy_if(mylist.begin(), mylist.end(), std::back_inserter(result), [](int x){ return x >= 0; });
このような関数はしばしば見られ、Pythonのある機能と遠隔的に呼応している.transform,any_of, all_of, min, max.
可変パラメータ
Pythonは最初から可変パラメータをサポートしています.変数パラメータの関数を定義することができます.個数は不確定でも、タイプは異なります.
def foo(*args):
for x in args:
print(x);
foo(5, "hello", True)
C++11里initializer_Listは、同じタイプの個数可変パラメータ(C++Primer 5 th 6.2.6)をサポートすることができる.
void foo(std::initializer_list il) {
for (auto x : il)
std::cout << x;
}
foo({4, 5, 6});
ここを見て、C++でPythonを勉強するのも素晴らしい方法だと思いますか?この質問の答えから、@Milo Yipも同じ道の中の人だとわかりますね.
続行
いいと思う?こぶしを広げたい?このrepoを見てみましょう.C++でPythonを学ぶ方法をもっと教えてあげます.