Python初心者がサンプルコードを見て「何だこれ」とつまずきやすいのが、関数の引数の*argsと**kwargs。 関数定義で引数に*と**(1個または2個のアスタリスク)をつけると、呼び出し時に任意の数の引数(可変長引数)を指定できる。慣例として*args, **kwargsという名前が使われることが多いが、*と**が頭についていれば他の名前でも問題ない。以下のサンプルコードでは*args, **kwargsという名前を使う。
![Pythonの可変長引数(*args, **kwargs)の使い方 | note.nkmk.me](https://cdn-ak-scissors.b.st-hatena.com/image/square/bd9995ff194e0552b8ba765fbb0c7909291bd898/height=288;version=1;width=512/https%3A%2F%2Fi.gyazo.com%2F0908f8f5dae855367e160dbb0d9a388f.png)
Python初心者がサンプルコードを見て「何だこれ」とつまずきやすいのが、関数の引数の*argsと**kwargs。 関数定義で引数に*と**(1個または2個のアスタリスク)をつけると、呼び出し時に任意の数の引数(可変長引数)を指定できる。慣例として*args, **kwargsという名前が使われることが多いが、*と**が頭についていれば他の名前でも問題ない。以下のサンプルコードでは*args, **kwargsという名前を使う。
私が常に頭を悩まされていたのが最適化問題です。これは、コードを理解するだけでも非常に困難な問題です。そこで、これまでに私が学んだことを基に、典型的な動的計画法の問題を取り扱ういくつかの記事を投稿することにしました。今回取り上げるロッド切り出し問題は古典的な最適化問題であり、動的計画法の一例と言えます。 ロッド切り出し問題とは? ロッド切り出し問題は、現実世界で私たちが直面するたいていの問題に非常によく似ています。ある長さの棒があり、この棒を最大利益が得られる長さにして切り売りをしたいという状況があると仮定します。ここで問題となるのは、切り出した長さによって棒の値段が異なる点です。例えば細かく切り出した方が大まかに切り出した場合よりも、より多くの利益が得られる可能性があるため、ちょっと違った考え方をする必要があります。 先に進む前に、まずはこの問題をより正確に定義しておきましょう。 長さ n
競技プログラミングを趣味にしよう この記事はtraP Advent Calendar 2016の22日目の記事です。ドカベントカレンダー こんにちは。nariです。競技プログラミングではrickythetaと名乗っていたりします。 今年も去年同様、競技プログラミングに関する記事を書きます。traPは競技プログラミングサークルですからね[要出典]。 対象読者 先に読者の厳選をしておきます。この記事は競技プログラミングを始めたはいいものの、なかなか実力が上がってこないという人を対象としています。 競技プログラミングを始めようとしている人は、他の競技プログラミング入門系の記事を読んでから来ることをおすすめします。 蛇足ですが、最近ではAtCoder社が初心者向けコンテンツを開発中らしいです。期待が高まります。 AtCoderのプログラミング入門教材 AtCoder Programming Gui
初心者C++Advent Calendar 2017 この記事は初心者C++Advent Calendar 2017 15日目の記事です << 14日目|C++を学ぶにあたって参考にした書籍・Webサイト || 16日目|何か書きます >> 今週3本目、このAdCでも3本目の記事です。期限に間に合わなかったでござる・・・。 今年の初心者AdC++は平和ですね・・・。 はじめに みなさま、ナマステ。さて、この記事のタイトルを見て、「時代・・・サトウキビ・・・忍者・・・うぅ、頭が」となった人は私と趣味が似ています・・・って話をするのは何回目だろうか。 先日ニコニコ(デクレッシェンド)が発表されましたが、Qiitaはクレッシェンドしていって貰いたいものです(なおデザイン改悪)。 (追記:と、この記事を書いていたら百花繚乱氏が登場した動画と生放送サービスに対する意見交換会が開かれましたね。われこそ
はじめに この記事は,C++初心者だけど競技プログラミングでC++を使っている,C++で競技プログラミングをやってみようと思っている人に向けた記事である. 「C++初心者」対象であって,プログラミングそのものが初心者である人向けではないかもしれない. なるべくC++11で可能な範囲で記述している. (最近の各種ジャッジサーバーではC++14も使えるからあんまりC++11にこだわる必要もないのだが一応) なお,この記事は気が向いたきに不定期に更新される可能性が高い. using namespace std; 競技プログラミングではタイプ量を少なくするために,using namespace std; というおまじないを書き,std:: を書かなくてもよいようにする. #include <iostream> using namespace std; int main() { // std::co
(※この記事はCompetitive Programming Advent Calendar 3日目用の記事です) 「競技プログラミングで利用できそう」なC++のSTLをまとめたいと思います。 すべてを網羅するのではなく、独断と偏見で使えそうなものだけピックアップしています。 またコンテナ系はスキップし、Algorithmを中心にまとめます。 見出しがそのままヘッダの名前になっています。 algorithm find ある値を探すときに使う。イテレータが帰ってくる。 // v = { 1, 2, 3, 4, 5 } find(v.begin(), v.end(), 3); // v.begin() + 2 find(v.begin(), v.end(), 7); // v.end() count 個数を数える。 // v = { 1, 2, 1, 3, 2 } count(v.begin(
&&に対する別名andのような、各種演算子に対するマクロを定義する。 ただしC++ではこれらの別名はキーワードとして定義されるため、このヘッダでは何も定義されない。
diff --git a/reference/algorithm.md b/reference/algorithm.md index 24441a342..34fe94c3f 100644 --- a/reference/algorithm.md +++ b/reference/algorithm.md @@ -149,6 +149,9 @@ ranges::sort(pv, {}, &Person::name); | [`ranges::find`](algorithm/ranges_find.md) | 指定された値を検索する | C++20 | | [`ranges::find_if`](algorithm/ranges_find_if.md) | 条件を満たす最初の要素を検索する | C++20 | | [`ranges::find_if_not`](algorithm/range
検索のしづらいC++の記号の意味をまとめてみました。C++11、C++14をはじめとして網羅的に集めたつもりです。 C言語についての記述もありますが、共通した記号であってもC++とCでは文法や動作の子細が異なる場合がありそのまま適用できないことがあります。また掲載してある記法は説明のために載せているのであってすべてが推奨できるわけではないことにご注意ください。用語や分類、解説はかなりいい加減です。 型[要素数]配列型(要素数は定数でなければならない。要素数を省略した型は不完全型)。 typedef int array[5]; //配列型int[5]にarrayという名前を付ける。 void f(int ptr[]); //関数の宣言に用いてvoid f(int* ptr);と同じ void f(int ptr[5]); //この場合要素数の記述は無意味で上記と同じ。 //動的配列の確保(ま
はじめに 本記事は、STLなどで使用されているジェネリックプログラミングの入門記事である。こちらの記事の内容をベースに、反復子やテンプレートなど、ジェネリックプログラミングを行うための基礎知識を追加した。 本記事の構成は、はじめにジェネリックプログラミングの概要を示し、続いてジェネリックプログラミングを行う際に必要となる反復子とテンプレートに関する基礎知識を紹介し、最後にマクロではなくテンプレートを推奨する理由について簡単に触れる、という構成になっている。 1. ジェネリックプログラミングとは ジェネリックプログラミングとは、 特定の型に依存しない実装をするプログラミングスタイル のこと。こちらの記事の sum 関数を例に、テンプレートを用いたジェネリックな関数を作成する手法を紹介する。 ※ sum 関数はあくまで例。実際に std::vector の様なコンテナに格納された値の合計値を計
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く