<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python on 孤筝の温暖小家</title><link>https://www.guzhengsvt.cn/ja/tags/python/</link><description>Recent content from 孤筝の温暖小家</description><generator>Hugo</generator><language>ja</language><managingEditor>lvbowen040427@163.com (孤筝)</managingEditor><webMaster>lvbowen040427@163.com (孤筝)</webMaster><copyright>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</copyright><lastBuildDate>Thu, 15 Feb 2024 11:44:33 +0800</lastBuildDate><atom:link href="https://www.guzhengsvt.cn/ja/tags/python/index.xml" rel="self" type="application/rss+xml"/><item><title>MicroPython関数ライブラリ</title><link>https://www.guzhengsvt.cn/ja/post/code/micropython%E5%87%BD%E6%95%B0%E5%BA%93/</link><pubDate>Thu, 15 Feb 2024 11:44:33 +0800</pubDate><author>lvbowen040427@163.com (孤筝)</author><guid>https://www.guzhengsvt.cn/ja/post/code/micropython%E5%87%BD%E6%95%B0%E5%BA%93/</guid><description>
<![CDATA[<h1>MicroPython関数ライブラリ</h1><p>著者: 孤筝(lvbowen040427@163.com)</p>
        
          <h2 id="machine-ハードウェア関連機能">
<a class="header-anchor" href="#machine-%e3%83%8f%e3%83%bc%e3%83%89%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%a2%e9%80%a3%e6%a9%9f%e8%83%bd"></a>
machine-ハードウェア関連機能
</h2><h3 id="pinクラス">
<a class="header-anchor" href="#pin%e3%82%af%e3%83%a9%e3%82%b9"></a>
Pinクラス
</h3><h4 id="machinepinidmodenonepullnonevalue">
<a class="header-anchor" href="#machinepinidmodenonepullnonevalue"></a>
<code>machine.Pin(id,mode=None,pull=None,value)</code>
</h4><p>Pinオブジェクトコンストラクタ</p>
<ul>
<li>id：GPIO番号、Picoでは0-29</li>
<li>mode：モード、オプション<code>None、Pin.IN(0)、Pin.OUT(1)、Pin.OPEN_DRAIN(2)</code></li>
<li>pull：内部プルアップ/プルダウン抵抗の使用、入力モードでのみ有効、オプション<code>None、Pin.PULL_UP(1)、Pin.DOWN(2)</code></li>
<li>value：出力またはオープンドレインモードでのポート値、0は低電位、1は高電位</li>
</ul>
<h4 id="pininitmodenonepullnone">
<a class="header-anchor" href="#pininitmodenonepullnone"></a>
<code>Pin.init(mode=None,pull=None)</code>
</h4><p>GPIOポートの再初期化</p>
<h4 id="pinvaluex">
<a class="header-anchor" href="#pinvaluex"></a>
<code>Pin.value([x])</code>
</h4><ul>
<li>パラメータなしの場合、GPIOポートの値を返す</li>
<li>パラメータ0または1を指定すると、GPIOポートに値を書き込む</li>
</ul>
<h4 id="pintoggle">
<a class="header-anchor" href="#pintoggle"></a>
<code>Pin.toggle()</code>
</h4><p>出力またはオープンドレインモードでポートの状態を反転
例.LED点滅</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="cl"><span class="n">led</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="k">while</span> <span class="kc">True</span> <span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">led</span><span class="o">.</span><span class="n">toggle</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="c1">#1秒ごとにLEDのON/OFFを切り替え</span>
</span></span></code></pre></div><h4 id="pinirqhandlernonetriggerpinirq_fallingpinirq_rising">
<a class="header-anchor" href="#pinirqhandlernonetriggerpinirq_fallingpinirq_rising"></a>
<code>Pin.irq(handler=None,trigger=(Pin.IRQ_FALLING|PIN.IRQ_RISING))</code>
</h4><p>外部割り込み関数</p>
<ul>
<li>handler：割り込みトリガーコールバック関数</li>
<li>trigger：割り込みトリガー条件（エッジトリガー/レベルトリガー）</li>
</ul>
<h4 id="その他">
<a class="header-anchor" href="#%e3%81%9d%e3%81%ae%e4%bb%96"></a>
その他
</h4><p>以下の関数は出力/オープンドレインモードで使用可能：</p>
<ul>
<li><code>Pin.low(),Pin.off()</code> ポートを低電圧に設定</li>
<li><code>Pin.high(),Pin.on()</code> ポートを高電圧に設定</li>
</ul>
<h4 id="例-led制御">
<a class="header-anchor" href="#%e4%be%8b-led%e5%88%b6%e5%be%a1"></a>
例. LED制御
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">utime</span>
</span></span><span class="line"><span class="cl"><span class="c1">#ボタンをGPIO15に接続、入力モード、内部プルアップ</span>
</span></span><span class="line"><span class="cl"><span class="n">button_num</span><span class="o">=</span><span class="mi">15</span>
</span></span><span class="line"><span class="cl"><span class="n">button</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="n">button_num</span><span class="p">,</span><span class="n">Pin</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span><span class="n">Pin</span><span class="o">.</span><span class="n">PULL_UP</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1">#GP25はボード上のLED、外部LEDはGP16に接続</span>
</span></span><span class="line"><span class="cl"><span class="n">led1_num</span><span class="o">=</span><span class="mi">25</span>
</span></span><span class="line"><span class="cl"><span class="n">led2_num</span><span class="o">=</span><span class="mi">16</span>
</span></span><span class="line"><span class="cl"><span class="n">led1</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="n">led1_num</span><span class="p">,</span><span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">led2</span><span class="o">=</span><span class="n">Pin</span><span class="p">(</span><span class="n">led2_num</span><span class="p">,</span><span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">while</span> <span class="kc">True</span> <span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">led2</span><span class="o">.</span><span class="n">off</span><span class="p">()</span><span class="c1">#外部LEDをオフ</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span><span class="p">(</span><span class="n">button</span><span class="o">.</span><span class="n">value</span><span class="p">()</span><span class="o">==</span><span class="mi">0</span><span class="p">):</span><span class="c1">#ボタンが押されたか判定（押下時0）</span>
</span></span><span class="line"><span class="cl">        <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span><span class="p">(</span><span class="n">button</span><span class="o">.</span><span class="n">value</span><span class="p">()</span><span class="o">==</span><span class="mi">0</span><span class="p">):</span><span class="c1">#ソフトウェアデバウンス</span>
</span></span><span class="line"><span class="cl">            <span class="n">led1</span><span class="o">.</span><span class="n">toggle</span><span class="p">()</span><span class="c1">#ボード上のLEDを反転</span>
</span></span><span class="line"><span class="cl">            <span class="n">led2</span><span class="o">.</span><span class="n">on</span><span class="p">()</span><span class="c1">#外部LEDを点灯（GP16高電位）</span>
</span></span><span class="line"><span class="cl">            <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;The button is pressed.&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="k">while</span> <span class="p">(</span><span class="n">button</span><span class="o">.</span><span class="n">value</span><span class="p">()</span><span class="o">==</span><span class="mi">0</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">            <span class="c1">#ボタンが押された状態で待機（外部LEDは点灯したまま）</span>
</span></span><span class="line"><span class="cl">                <span class="n">utime</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
</span></span></code></pre></div><h3 id="pwmクラス">
<a class="header-anchor" href="#pwm%e3%82%af%e3%83%a9%e3%82%b9"></a>
PWMクラス
</h3><h4 id="machinepwmpin">
<a class="header-anchor" href="#machinepwmpin"></a>
<code>machine.PWM(pin)</code>
</h4><p>指定GPIOをPWM出力として再初期化
pinはPinクラスオブジェクト</p>
<h4 id="pwmdeinit">
<a class="header-anchor" href="#pwmdeinit"></a>
<code>PWM.deinit()</code>
</h4><p>PWMの初期化解除、PWM出力を停止</p>
<h4 id="pwmfreqvalue">
<a class="header-anchor" href="#pwmfreqvalue"></a>
<code>PWM.freq([value])</code>
</h4><p>PWM周波数を設定（単位$Hz$）、分周器パラメータとTOPレジスタパラメータを自動計算</p>
<h4 id="pwmduty_u16value">
<a class="header-anchor" href="#pwmduty_u16value"></a>
`PWM.duty_u16([value])
</h4><p>デューティ比を設定
valueのデューティ比範囲は[0,65536]、これに基づいてCCレジスタに値を設定</p>
<h4 id="pwmduty_nsvalue">
<a class="header-anchor" href="#pwmduty_nsvalue"></a>
<code>PWM.duty_ns([value])</code>
</h4><p>1周期の高電位時間をナノ秒単位で設定</p>
<h4 id="例-ブレスled">
<a class="header-anchor" href="#%e4%be%8b-%e3%83%96%e3%83%ac%e3%82%b9led"></a>
例. ブレスLED
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">machine</span> <span class="kn">import</span> <span class="n">Pin</span><span class="p">,</span><span class="n">PWM</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">led</span><span class="o">=</span><span class="n">PWM</span><span class="p">(</span><span class="n">Pin</span><span class="p">(</span><span class="mi">25</span><span class="p">))</span><span class="c1">#ボード上のLEDをPWMオブジェクトとして初期化</span>
</span></span><span class="line"><span class="cl"><span class="n">led</span><span class="o">.</span><span class="n">freq</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span><span class="c1">#周波数設定</span>
</span></span><span class="line"><span class="cl"><span class="n">led_duty</span><span class="o">=</span><span class="mi">0</span><span class="c1">#初期値</span>
</span></span><span class="line"><span class="cl"><span class="n">led_direction</span><span class="o">=</span><span class="mi">1</span><span class="c1">#ステップ幅</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">led_duty</span><span class="o">+=</span><span class="n">led_direction</span><span class="c1">#デューティ比を増加/減少</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="n">led_duty</span><span class="o">&gt;=</span><span class="mi">100</span><span class="p">:</span><span class="c1">#最大</span>
</span></span><span class="line"><span class="cl">        <span class="n">led_duty</span><span class="o">=</span><span class="mi">100</span>
</span></span><span class="line"><span class="cl">        <span class="n">led_direction</span><span class="o">=-</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl">    <span class="k">elif</span> <span class="n">led_duty</span><span class="o">&lt;=</span><span class="mi">0</span><span class="p">:</span><span class="c1">#最小</span>
</span></span><span class="line"><span class="cl">        <span class="n">led_duty</span><span class="o">=</span><span class="mi">0</span>
</span></span><span class="line"><span class="cl">        <span class="n">led_direction</span><span class="o">=</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">    <span class="n">led</span><span class="o">.</span><span class="n">duty_u16</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">led_duty</span><span class="o">*</span><span class="mf">655.36</span><span class="p">))</span><span class="c1">#デューティ比値変換</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="n">led_duty</span><span class="o">%</span><span class="mi">5</span><span class="o">==</span><span class="mi">0</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="n">led_duty</span><span class="p">)</span><span class="c1">#グラフ観測用</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="c1">#周期2秒</span>
</span></span></code></pre></div><h3 id="adcクラス">
<a class="header-anchor" href="#adc%e3%82%af%e3%83%a9%e3%82%b9"></a>
ADCクラス
</h3><h4 id="machineadcid">
<a class="header-anchor" href="#machineadcid"></a>
<code>machine.ADC(id)</code>
</h4><p>ADCオブジェクトとして初期化、idはGPIOまたはADCチャンネル。Pinオブジェクト使用時はGPIOがADCをサポートしている必要あり。
0-3はPicoのGPIOチャンネル26-29、4はチップ内温度センサーチャンネル。</p>
<h4 id="adcread_u16">
<a class="header-anchor" href="#adcread_u16"></a>
<code>ADC.read_u16()</code>
</h4><p>対応チャンネルのADC値を読み取り[0,65525]の範囲で返す。</p>

        
        <hr><p>この記事は2024-02-15に<a href='https://www.guzhengsvt.cn/'>孤筝の温暖小家</a>で公開され、最終更新日は2024-02-15です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]></description><category>Code</category></item><item><title>Pythonの基本データ構造</title><link>https://www.guzhengsvt.cn/ja/post/code/python%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/</link><pubDate>Sun, 27 Aug 2023 21:40:39 +0800</pubDate><author>lvbowen040427@163.com (孤筝)</author><guid>https://www.guzhengsvt.cn/ja/post/code/python%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/</guid><description>
<![CDATA[<h1>Pythonの基本データ構造</h1><p>著者: 孤筝(lvbowen040427@163.com)</p>
        
          <p><strong>elemは単語element（要素）の略称</strong>であり、プログラムの定義では不確定な型、つまり抽象的なデータ型を表します。</p>
<h2 id="リスト">
<a class="header-anchor" href="#%e3%83%aa%e3%82%b9%e3%83%88"></a>
リスト
</h2><h3 id="定義">
<a class="header-anchor" href="#%e5%ae%9a%e7%be%a9"></a>
定義
</h3><p>順番に並べられた要素からなるコンテナ</p>
<ul>
<li>要素は任意の型で可能</li>
<li>要素は確定した順序で並び、順序性を持つ</li>
</ul>
<h3 id="リストの作成">
<a class="header-anchor" href="#%e3%83%aa%e3%82%b9%e3%83%88%e3%81%ae%e4%bd%9c%e6%88%90"></a>
リストの作成
</h3><p>空のリストインスタンスを作成してから要素を追加する</p>
<ul>
<li>list()</li>
<li>.append()メソッド</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">wife</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span><span class="c1">#インスタンス化</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">wife</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&#34;西宮硝子&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">wife</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&#34;櫻島麻衣&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">wife</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&#34;愛莉希雅&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">wife</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s1">&#39;西宮硝子&#39;</span><span class="p">,</span><span class="s1">&#39;櫻島麻衣&#39;</span><span class="p">,</span><span class="s1">&#39;愛莉希雅&#39;</span><span class="p">]</span>
</span></span></code></pre></div><p>直接リストを定義して要素を埋める</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">phones</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&#34;Apple&#34;</span><span class="p">,</span> <span class="s2">&#34;Huawei&#34;</span><span class="p">,</span> <span class="s2">&#34;Xiaomi&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">phones</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="s1">&#39;Apple&#39;</span><span class="p">,</span> <span class="s1">&#39;Huawei&#39;</span><span class="p">,</span> <span class="s1">&#39;Xiaomi&#39;</span><span class="p">]</span>
</span></span></code></pre></div><h3 id="要素の確認">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e7%a2%ba%e8%aa%8d"></a>
要素の確認
</h3><ol>
<li>インデックスの使用
$[i]$でi+1番目の要素を確認</li>
<li>index()メソッド

$$name.index(x)$$
list name内で最初に値がxとなる要素を検索し、そのインデックスを返す</li>
<li>count()メソッド

$$name.count(x)$$
list name内で値がxとなる要素がいくつあるかを確認し、その数を返す</li>
<li>len()メソッド

$$name.len()$$
list name内の要素の総数を検索し、その数を返す</li>
</ol>
<h3 id="新しい要素の追加">
<a class="header-anchor" href="#%e6%96%b0%e3%81%97%e3%81%84%e8%a6%81%e7%b4%a0%e3%81%ae%e8%bf%bd%e5%8a%a0"></a>
新しい要素の追加
</h3><ol>
<li>append()メソッド

$$name.append(x)$$
nameの末尾に要素xを追加する</li>
<li>insert()メソッド

$$name.insert(i,x)$$
オブジェクトxをnameのインデックスiの位置に挿入し、元のiおよびi以降の要素を順番に後ろに移動させる</li>
<li>extend()メソッド

$$name.extend(name2)$$
リストname2をリストnameの後ろに連結する</li>
</ol>
<h3 id="要素の変更">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e5%a4%89%e6%9b%b4"></a>
要素の変更
</h3><ol>
<li>インデックスを指定して要素を直接代入して変更する</li>
</ol>
<h3 id="要素の削除">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e5%89%8a%e9%99%a4"></a>
要素の削除
</h3><ol>
<li>pop()メソッド

$$name.pop()$$
デフォルトでlistの最後の要素を削除

$$name.pop(i)$$
インデックスがiの要素を削除し、後ろの要素を順番に前に移動</li>
<li>remove()メソッド

$$name.remove(x)$$
最初に値がxである要素を削除し、後ろの要素を順番に前に移動</li>
<li>clear()メソッド

$$name.clear()$$
すべての要素を削除（listを空にする）</li>
<li>del<strong>文</strong>

$$del\ name[a:b]$$
delインデックス$[a,b)$の要素を削除、aを含みbを含まない
$del\ name[:]$はlistを空にすることを意味する

$$del\ name[i]$$
インデックスがiの要素を削除</li>
</ol>
<h3 id="リストの反転">
<a class="header-anchor" href="#%e3%83%aa%e3%82%b9%e3%83%88%e3%81%ae%e5%8f%8d%e8%bb%a2"></a>
リストの反転
</h3><ol>
<li>reverse()メソッド

$$name.reverse()$$
リストnameを反転させ、最後の要素が最初の要素になり、以降も同様に順番が逆になります。</li>
<li>スライス法</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">nums</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">new_nums</span><span class="o">=</span><span class="n">nums</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">new_nums</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span>
</span></span></code></pre></div><p>元のオブジェクトnumsは変更されず、反転されたリストとして新しいオブジェクトnew_numsが生成されます。</p>
<h3 id="リストのソート">
<a class="header-anchor" href="#%e3%83%aa%e3%82%b9%e3%83%88%e3%81%ae%e3%82%bd%e3%83%bc%e3%83%88"></a>
リストのソート
</h3><ol>
<li>sort()メソッド

$$name.sort()$$

$$name.sort(cmp=None,key=None,reverse=False)$$</li>
</ol>
<ul>
<li>
<p>このメソッドは戻り値がなく、元のlistを直接変更します</p>
</li>
<li>
<p>cmpはオプションのパラメータです</p>
</li>
<li>
<p>keyは要素のどのパラメータを比較の重みとして使用するかを指定し、比較可能なオブジェクトから取られる単一のパラメータです</p>
<ul>
<li>比較要素elemが単一のパラメータ（数字や単一の文字など）のみを含む場合、keyパラメータは省略可能です。</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># リストの2番目の要素を取得</span>
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">takeSecond</span><span class="p">(</span><span class="n">elem</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="n">elem</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c1"># リスト</span>
</span></span><span class="line"><span class="cl"><span class="n">random</span> <span class="o">=</span> <span class="p">[(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">)]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2番目の要素でソートを指定</span>
</span></span><span class="line"><span class="cl"><span class="n">random</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="n">takeSecond</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1">#関数takeSecondを通じてタプルの2番目の要素（重み）を比較するように指定</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># リストを出力</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;ソートされたリスト：&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">random</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">ソートされたリスト</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="p">[(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">)]</span>
</span></span></code></pre></div><ul>
<li>reverseはソートのルールで、デフォルトはFalseで昇順、Trueは降順です</li>
</ul>
<h2 id="タプル">
<a class="header-anchor" href="#%e3%82%bf%e3%83%97%e3%83%ab"></a>
タプル
</h2><h3 id="定義-1">
<a class="header-anchor" href="#%e5%ae%9a%e7%be%a9-1"></a>
定義
</h3><p>タプル（tuple）は、一連の要素を順番に並べて形成されるコンテナです。
タプルは不変（immutable）であり、リストは可変（mutable）です。</p>
<h3 id="タプルの作成">
<a class="header-anchor" href="#%e3%82%bf%e3%83%97%e3%83%ab%e3%81%ae%e4%bd%9c%e6%88%90"></a>
タプルの作成
</h3><ol>
<li>直接$()$ですべての要素を囲むことで作成、リストの作成は$[]$を使用</li>
<li>時には$()$を使用しなくてもタプルを作成できる（非推奨）</li>
<li>タプルの内包表記</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">atuple</span><span class="o">=</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">31</span><span class="p">,</span><span class="mi">42</span><span class="p">))</span>
</span></span></code></pre></div><ol start="4">
<li>作成するタプルが1つのオブジェクトのみを含む場合、その後にカンマ$","$を追加
そうしないと、括弧付きオブジェクトのデータ型はタプルではなくオブジェクト型になる</li>
<li>空のタプルを作成</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">a</span><span class="o">=</span><span class="nb">tuple</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">b</span><span class="o">=</span><span class="p">()</span>
</span></span></code></pre></div><h3 id="tupleは増減改査を許可しません">
<a class="header-anchor" href="#tuple%e3%81%af%e5%a2%97%e6%b8%9b%e6%94%b9%e6%9f%bb%e3%82%92%e8%a8%b1%e5%8f%af%e3%81%97%e3%81%be%e3%81%9b%e3%82%93"></a>
tupleは増減改査を許可しません
</h3><h3 id="tupleとlistの変換">
<a class="header-anchor" href="#tuple%e3%81%a8list%e3%81%ae%e5%a4%89%e6%8f%9b"></a>
tupleとlistの変換
</h3><p>tuple-&gt;list</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">atuple</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="s1">&#39;love&#39;</span><span class="p">,</span><span class="mf">3.334</span><span class="p">,</span><span class="s1">&#39;Y&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">list</span><span class="p">(</span><span class="n">atuple</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;この時atupleは依然としてtuple型&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="n">alist</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">atuple</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;alistはlist型&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">atuple</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;love&#39;</span><span class="p">,</span> <span class="mf">3.334</span><span class="p">,</span> <span class="s1">&#39;Y&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">alist</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;love&#39;</span><span class="p">,</span> <span class="mf">3.334</span><span class="p">,</span> <span class="s1">&#39;Y&#39;</span><span class="p">]</span>
</span></span></code></pre></div><p>list-&gt;tuple</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">alist</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;I&#39;</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mf">3.1415</span><span class="p">,</span><span class="s1">&#39;polaris&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="n">atuple</span><span class="o">=</span><span class="nb">tuple</span><span class="p">(</span><span class="n">alist</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;alistは依然としてlist、atupleはtuple&#39;&#39;&#39;</span>
</span></span></code></pre></div><h2 id="dict">
<a class="header-anchor" href="#dict"></a>
dict
</h2><h3 id="定義-2">
<a class="header-anchor" href="#%e5%ae%9a%e7%be%a9-2"></a>
定義
</h3><ul>
<li>辞書（dict）、一連の<strong>キーと値のペア（key-value）</strong> で構成されるデータ構造です。</li>
<li>キーはハッシュ可能な値でなければなりません。例えば==文字列==や数値など。
<ul>
<li>ハッシュ：任意の長さの入力をハッシュ（散列）アルゴリズムを通じて固定長の出力（ハッシュ値）に変換すること。
ハッシュは一種の圧縮マッピングです。</li>
</ul>
</li>
<li>値は任意のオブジェクトを指定できます。</li>
</ul>
<h3 id="辞書の作成">
<a class="header-anchor" href="#%e8%be%9e%e6%9b%b8%e3%81%ae%e4%bd%9c%e6%88%90"></a>
辞書の作成
</h3><ol>
<li>空の辞書を作成してから要素を追加する
識別子とオブジェクト（key&amp;value）を<strong>等号</strong>で接続することに注意
この場合、keyは識別子であり、<strong>識別子の文字列には引用符を付けない</strong></li>
<li>直接中括弧$\{\}$を使用する
keyとvalueを<strong>コロン</strong>で接続することに注意
<strong>この場合、コロンの前がkeyであり、文字列には引用符が必要</strong></li>
<li>dict()関数を使用してキーと値のシーケンス（tuple、listなど）からdictを作成する</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">profile</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;孤筝&#39;</span><span class="p">,</span><span class="n">age</span><span class="o">=</span><span class="mi">19</span><span class="p">,</span><span class="n">爱好</span><span class="o">=</span><span class="s1">&#39;明月栞那&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">profile</span><span class="o">=</span><span class="p">{</span><span class="n">name</span><span class="p">:</span><span class="s1">&#39;孤筝&#39;</span><span class="p">,</span><span class="n">age</span><span class="p">:</span><span class="mi">19</span><span class="p">,</span><span class="n">爱好</span><span class="p">:</span><span class="s1">&#39;明月栞那&#39;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">alist</span><span class="o">=</span><span class="p">[(</span><span class="s1">&#39;name&#39;</span><span class="p">,</span><span class="s1">&#39;孤筝&#39;</span><span class="p">),(</span><span class="s1">&#39;age&#39;</span><span class="p">,</span><span class="mi">19</span><span class="p">),(</span><span class="s1">&#39;爱好&#39;</span><span class="p">,</span><span class="s1">&#39;明月栞那&#39;</span><span class="p">)]</span>
</span></span><span class="line"><span class="cl"><span class="n">profile</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">alist</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">この場合</span><span class="err">、</span><span class="n">alistはlistのまま</span><span class="err">、</span><span class="n">profileオブジェクトはdict</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">profile</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="p">{</span><span class="s1">&#39;name&#39;</span><span class="p">:</span><span class="s1">&#39;孤筝&#39;</span><span class="p">,</span><span class="s1">&#39;age&#39;</span><span class="p">:</span><span class="mi">19</span><span class="p">,</span><span class="s1">&#39;爱好&#39;</span><span class="p">:</span><span class="s1">&#39;明月栞那&#39;</span><span class="p">}</span>
</span></span></code></pre></div><ol start="4">
<li>辞書内包表記</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">adict</span><span class="o">=</span><span class="p">{</span><span class="n">i</span><span class="p">:</span><span class="n">i</span><span class="o">**</span><span class="mi">2</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">)}</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">adict</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="p">{</span><span class="mi">2</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">:</span><span class="mi">9</span><span class="p">,</span><span class="mi">4</span><span class="p">:</span><span class="mi">16</span><span class="p">,</span><span class="mi">5</span><span class="p">:</span><span class="mi">25</span><span class="p">}</span>
</span></span></code></pre></div><h3 id="要素の確認-1">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e7%a2%ba%e8%aa%8d-1"></a>
要素の確認
</h3><ol>
<li>
$$dict[key]$$を使用
dictは辞書名、keyはキー
keyが存在しない場合、KeyValueエラーが発生</li>
<li>$dict.get(key[,value])$を使用
dictは辞書名、keyはキー、valueはオプションパラメータで初期値
keyが存在しない場合、設定したvalueを返し、valueが設定されていない場合はNoneを返す
==キーが辞書に存在しない場合、キーが追加され、valueがデフォルト値に設定されます。==</li>
</ol>
<h3 id="新しい要素の追加-1">
<a class="header-anchor" href="#%e6%96%b0%e3%81%97%e3%81%84%e8%a6%81%e7%b4%a0%e3%81%ae%e8%bf%bd%e5%8a%a0-1"></a>
新しい要素の追加
</h3>$$dict[key]=value$$<p>
keyは新しいキーで、valueは対応する値です</p>
<h3 id="要素の変更-1">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e5%a4%89%e6%9b%b4-1"></a>
要素の変更
</h3>$$dict[key]=new\_value$$<h3 id="要素の削除-1">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e5%89%8a%e9%99%a4-1"></a>
要素の削除
</h3><ol>
<li>$dict.pop(key)$
dictは辞書名、keyはキーで、文字列には引用符が必要</li>
<li>del関数

$$del\ dict[key]$$
dictは辞書名</li>
</ol>
<h3 id="その他の重要な方法">
<a class="header-anchor" href="#%e3%81%9d%e3%81%ae%e4%bb%96%e3%81%ae%e9%87%8d%e8%a6%81%e3%81%aa%e6%96%b9%e6%b3%95"></a>
その他の重要な方法
</h3><h4 id="keyの存在を確認する">
<a class="header-anchor" href="#key%e3%81%ae%e5%ad%98%e5%9c%a8%e3%82%92%e7%a2%ba%e8%aa%8d%e3%81%99%e3%82%8b"></a>
keyの存在を確認する
</h4><ol>
<li>$in,not in$</li>
<li>$dict.has\_key()$関数
存在すればTrueを返し、存在しなければFalseを返す
==Python2でのみ使用可能、Python3では削除==</li>
</ol>
<h4 id="keyのデフォルト値を設定する">
<a class="header-anchor" href="#key%e3%81%ae%e3%83%87%e3%83%95%e3%82%a9%e3%83%ab%e3%83%88%e5%80%a4%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b"></a>
keyのデフォルト値を設定する
</h4><ol>
<li>まずkeyがdictに存在するかどうかを確認し、存在しない場合は値を割り当てる</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">profile</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;王炳明&#34;</span><span class="p">,</span> <span class="s2">&#34;age&#34;</span><span class="p">:</span> <span class="mi">27</span><span class="p">,</span> <span class="s2">&#34;公众号&#34;</span><span class="p">:</span> <span class="s2">&#34;Python编程时光&#34;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="s2">&#34;gender&#34;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">profile</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">profile</span><span class="p">[</span><span class="s2">&#34;gender&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&#34;male&#34;</span>
</span></span></code></pre></div><ol start="2">
<li>$setdefault()$メソッド

$$dict.setdefault(key,default=None)$$
defaultはkeyが存在しない場合に設定する値で、デフォルトはNone</li>
</ol>
<h2 id="set">
<a class="header-anchor" href="#set"></a>
set
</h2><h3 id="定義-3">
<a class="header-anchor" href="#%e5%ae%9a%e7%be%a9-3"></a>
定義
</h3><p>集合（set）は、数学の集合と同じく、<strong>順序付けされていない</strong>、<strong>重複のない</strong>要素のシーケンスです。
==question==：順序がない場合、print setの際に要素はどのような順序で表示され、保存時はどのような順序になるのでしょうか？</p>
<h3 id="集合の作成">
<a class="header-anchor" href="#%e9%9b%86%e5%90%88%e3%81%ae%e4%bd%9c%e6%88%90"></a>
集合の作成
</h3><ol>
<li><strong>波括弧</strong>を使用して作成します。$\{\}$内に重複した要素を含めることができますが、最終的にsetは重複を削除します。</li>
<li>set()メソッドを使用して作成します。</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">aset</span><span class="o">=</span><span class="p">{</span><span class="mi">1314</span><span class="p">,</span><span class="s1">&#39;520&#39;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">aset</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span><span class="mi">1314</span><span class="p">,</span><span class="s1">&#39;520&#39;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">bset</span><span class="o">=</span><span class="nb">set</span><span class="p">()</span><span class="c1">#空の集合asetを作成</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">bset</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="nb">set</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">cset</span><span class="o">=</span><span class="nb">set</span><span class="p">([</span><span class="s1">&#39;I&#39;</span><span class="p">,</span><span class="s1">&#39;love&#39;</span><span class="p">,</span><span class="s1">&#39;ishimiya&#39;</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">cset</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span><span class="s1">&#39;I&#39;</span><span class="p">,</span><span class="s1">&#39;love&#39;</span><span class="p">,</span><span class="s1">&#39;ishimiya&#39;</span><span class="p">}</span>
</span></span></code></pre></div><h3 id="要素の追加">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e8%bf%bd%e5%8a%a0"></a>
要素の追加
</h3><ol>
<li>
<p>$.add()$関数
</p>
$$set.add(elem)$$<p>
==question==：elemが既存のset要素の場合、何が起こるか？
注意：追加する要素がset集合内の要素と重複する場合、何の効果もないが、エラーは発生しない。</p>
<p>追加する要素は<strong>不変型</strong>でなければならない。可変型の要素を追加するとエラーが発生する。</p>
</li>
<li>
<p>$.update()$関数
</p>
$$set.update(ElemType)$$<p>
ElemTypeはシーケンス（string、list、tuple、dict、setなど）でなければならない。</p>
</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">aset</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;朱冰倩&#39;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s1">&#39;suki&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">&#39;for&#39;</span><span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;集合{&#39;for&#39;}を追加&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">update</span><span class="p">([</span><span class="mi">10000</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;リスト[10000]を追加&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="s1">&#39;years&#39;</span><span class="p">,))</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;タプルを追加、要素が1つの場合カンマを付ける&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">&#39;name&#39;</span><span class="p">:</span><span class="s1">&#39;guzheng&#39;</span><span class="p">,</span><span class="s1">&#39;age&#39;</span><span class="p">:</span><span class="mi">19</span><span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;辞書を追加、keyのみsetに追加される&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">aset</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span><span class="s1">&#39;朱冰倩&#39;</span><span class="p">,</span><span class="s1">&#39;suki&#39;</span><span class="p">,</span><span class="s1">&#39;for&#39;</span><span class="p">,</span><span class="mi">10000</span><span class="p">,</span><span class="s1">&#39;years&#39;</span><span class="p">,</span><span class="s1">&#39;name&#39;</span><span class="p">,</span><span class="s1">&#39;age&#39;</span><span class="p">}</span>
</span></span></code></pre></div><h3 id="要素の削除-2">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e5%89%8a%e9%99%a4-2"></a>
要素の削除
</h3><ol>
<li>$.remove()$</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">aset</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;朱冰倩&#39;</span><span class="p">,</span><span class="s1">&#39;suki&#39;</span><span class="p">,</span><span class="s1">&#39;for&#39;</span><span class="p">,</span><span class="mi">10000</span><span class="p">,</span><span class="s1">&#39;years&#39;</span><span class="p">,</span><span class="s1">&#39;name&#39;</span><span class="p">,</span><span class="s1">&#39;age&#39;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s1">&#39;name&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s1">&#39;爱&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;存在しない要素をremoveするとエラーが発生する&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="ne">KeyError</span><span class="p">:</span> <span class="s1">&#39;愛&#39;</span>
</span></span></code></pre></div><ol start="2">
<li>$.discard()$
要素が存在すれば削除し、存在しなくてもエラーにならない</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">aset</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;朱冰倩&#39;</span><span class="p">,</span><span class="s1">&#39;suki&#39;</span><span class="p">,</span><span class="s1">&#39;for&#39;</span><span class="p">,</span><span class="mi">10000</span><span class="p">,</span><span class="s1">&#39;years&#39;</span><span class="p">,</span><span class="s1">&#39;age&#39;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="s1">&#39;age&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="s1">&#39;love&#39;</span><span class="p">)</span>
</span></span></code></pre></div><ol start="3">
<li>$.pop()$
集合からランダムに要素を削除し、パラメータを渡すことはできない</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">aset</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;朱冰倩&#39;</span><span class="p">,</span><span class="s1">&#39;suki&#39;</span><span class="p">,</span><span class="s1">&#39;for&#39;</span><span class="p">,</span><span class="mi">10000</span><span class="p">,</span><span class="s1">&#39;love&#39;</span><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="n">aset</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">aset</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">出力例</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span><span class="s1">&#39;朱冰倩&#39;</span><span class="p">,</span><span class="s1">&#39;suki&#39;</span><span class="p">,</span><span class="s1">&#39;for&#39;</span><span class="p">,</span><span class="mi">10000</span><span class="p">}</span>
</span></span></code></pre></div><ol start="4">
<li>$.clear()$
集合内の要素をすべて削除する

$$set.clear()$$</li>
</ol>
<h3 id="要素の変更-2">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e5%a4%89%e6%9b%b4-2"></a>
要素の変更
</h3><p>セット内の要素は順序がないため、集合にはインデックスがなく、要素を変更することはできず、追加または削除のみ可能です。</p>
<h3 id="要素の確認-2">
<a class="header-anchor" href="#%e8%a6%81%e7%b4%a0%e3%81%ae%e7%a2%ba%e8%aa%8d-2"></a>
要素の確認
</h3><p>同上、インデックスなしでは要素を確認できません。
<strong>要素数の確認</strong>
</p>
$$len(set)$$<p>
セット内の要素数を返します</p>
<h3 id="集合演算">
<a class="header-anchor" href="#%e9%9b%86%e5%90%88%e6%bc%94%e7%ae%97"></a>
集合演算
</h3><h4 id="和集合">
<a class="header-anchor" href="#%e5%92%8c%e9%9b%86%e5%90%88"></a>
和集合
</h4><p>$union$関数を使用して2つの集合を結合し重複を削除し、結合後の集合Cを返します
</p>
$$aset.union(bset)$$<p>
同等
</p>
$$aset\ |\ bset$$<h4 id="差集合">
<a class="header-anchor" href="#%e5%b7%ae%e9%9b%86%e5%90%88"></a>
差集合
</h4><p>$difference$関数を使用して差集合を求めます：==集合Aに存在する==が==集合Bには存在しない==要素を見つけ、新しい集合Cとして返します。
</p>
$$aset.difference(bset)$$<p>
同等
</p>
$$aset\ -\ bset$$<h4 id="積集合">
<a class="header-anchor" href="#%e7%a9%8d%e9%9b%86%e5%90%88"></a>
積集合
</h4><ol>
<li>$intersection$関数を使用して積集合を求めます：==集合AとBの両方に存在する==要素を見つけ、集合Cとして返します。

$$aset.intersection(bset)$$
または
$$bset.intersection(aset)$$
同等

$$aset\ \&\ bset$$

$$bset\ \&\ aset$$</li>
<li>$intersection\_update$関数を使用して積集合を求めます：積集合を見つけasetに代入し、積集合を返しません。

$$aset.intersection\_update()$$</li>
<li>$\&$を使用し、積集合を返しますがaset、bsetは変更しません

$$aset\ \&\ bset$$</li>
</ol>
<h4 id="対称差集合">
<a class="header-anchor" href="#%e5%af%be%e7%a7%b0%e5%b7%ae%e9%9b%86%e5%90%88"></a>
対称差集合
</h4><ol>
<li>$symmetric\_difference$関数を使用し、対称差集合を返します

$$aset.symmetric\_difference(bset)$$</li>
<li>$symmetric\_difference\_update$関数を使用し、対称差集合をasetに返します

$$aset.symmetric\_difference\_update(bset)$$</li>
</ol>
<h3 id="その他">
<a class="header-anchor" href="#%e3%81%9d%e3%81%ae%e4%bb%96"></a>
その他
</h3><ol>
<li>setが特定の要素を含むかどうかを判断するには、inを使用します

$$print(elem\ in\ aset)$$</li>
<li>2つのsetに共通の要素があるかどうかを判断します

$$aset.isdisjoint(bset)$$
共通の要素がある場合はFalseを返します</li>
<li>bsetがasetの部分集合かどうかを判断します

$$bset.issubset(aset)$$
<strong>bsetがasetの部分集合である</strong>場合、Trueを返します</li>
</ol>
<h2 id="イテレータ">
<a class="header-anchor" href="#%e3%82%a4%e3%83%86%e3%83%ac%e3%83%bc%e3%82%bf"></a>
イテレータ
</h2><p>イテレータ</p>
<h3 id="反復可能オブジェクト">
<a class="header-anchor" href="#%e5%8f%8d%e5%be%a9%e5%8f%af%e8%83%bd%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88"></a>
反復可能オブジェクト
</h3><p>forループを利用できるオブジェクトは、すべて反復可能オブジェクトと呼ばれます。</p>
<h3 id="反復可能プロトコル">
<a class="header-anchor" href="#%e5%8f%8d%e5%be%a9%e5%8f%af%e8%83%bd%e3%83%97%e3%83%ad%e3%83%88%e3%82%b3%e3%83%ab"></a>
反復可能プロトコル
</h3><ol>
<li><strong>最初のシナリオ</strong>：あるオブジェクトが内部で<code>__iter__()</code>メソッドを実装し、イテレータインスタンスを返す場合、そのオブジェクトは反復可能オブジェクトです。
<ol>
<li>このシナリオでは、<code>isinstance(my_list,Iterable)</code>はTrueを返します</li>
</ol>
</li>
<li><strong>2番目のシナリオ</strong>：あるオブジェクトが<code>__iter__()</code>を実装していない場合、Pythonインタプリタは<code>__getitem__()</code>メソッドを使用して要素を取得します。これが可能であれば、そのオブジェクトも反復可能オブジェクトです。
<ol>
<li>このタイプの反復可能オブジェクトの場合、<code>isinstance(my_list,Iterable)</code>はFalseを返します</li>
</ol>
</li>
</ol>
<h3 id="イテレータオブジェクト">
<a class="header-anchor" href="#%e3%82%a4%e3%83%86%e3%83%ac%e3%83%bc%e3%82%bf%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88"></a>
イテレータオブジェクト
</h3><p>反復可能なオブジェクトに対してiter関数を使用すると、イテレータオブジェクトが返されます。イテレータオブジェクトに対してはnext関数を使用して要素を取得できます。実行するたびに1つずつ要素を取得し、すべて取得し終わるとStopIterationが発生し、これ以上要素がないことが通知されます。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">alist</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;人&#39;</span><span class="p">,</span><span class="s1">&#39;生&#39;</span><span class="p">,</span><span class="s1">&#39;若&#39;</span><span class="p">,</span><span class="s1">&#39;只&#39;</span><span class="p">,</span><span class="s1">&#39;如&#39;</span><span class="p">,</span><span class="s1">&#39;初&#39;</span><span class="p">,</span><span class="s1">&#39;見&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="n">gen</span><span class="o">=</span><span class="nb">iter</span><span class="p">(</span><span class="n">alist</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">alist</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">gen</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="n">人</span>
</span></span><span class="line"><span class="cl"><span class="n">生</span>
</span></span><span class="line"><span class="cl"><span class="n">若</span>
</span></span><span class="line"><span class="cl"><span class="n">只</span>
</span></span><span class="line"><span class="cl"><span class="n">如</span>
</span></span><span class="line"><span class="cl"><span class="n">初</span>
</span></span><span class="line"><span class="cl"><span class="n">見</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">alist</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="n">人</span>
</span></span><span class="line"><span class="cl"><span class="n">生</span>
</span></span><span class="line"><span class="cl"><span class="n">若</span>
</span></span><span class="line"><span class="cl"><span class="n">只</span>
</span></span><span class="line"><span class="cl"><span class="n">如</span>
</span></span><span class="line"><span class="cl"><span class="n">初</span>
</span></span><span class="line"><span class="cl"><span class="n">見</span>
</span></span></code></pre></div><h3 id="反復可能オブジェクトとイテレータオブジェクト">
<a class="header-anchor" href="#%e5%8f%8d%e5%be%a9%e5%8f%af%e8%83%bd%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%a8%e3%82%a4%e3%83%86%e3%83%ac%e3%83%bc%e3%82%bf%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88"></a>
反復可能オブジェクトとイテレータオブジェクト
</h3><ol>
<li>反復可能オブジェクトは全体を指し、例えばリストのようなものです。</li>
<li>イテレータオブジェクトはiter()関数によって返されるオブジェクトで、このオブジェクトに対してnext()関数を使用して要素を次々と取得できます。</li>
</ol>
<h2 id="generator">
<a class="header-anchor" href="#generator"></a>
generator
</h2><p>ジェネレータは、イテレータのようにforループを使用して要素を取得できる関数です。</p>
<h3 id="ジェネレータの作成">
<a class="header-anchor" href="#%e3%82%b8%e3%82%a7%e3%83%8d%e3%83%ac%e3%83%bc%e3%82%bf%e3%81%ae%e4%bd%9c%e6%88%90"></a>
ジェネレータの作成
</h3><h4 id="リスト内包表記">
<a class="header-anchor" href="#%e3%83%aa%e3%82%b9%e3%83%88%e5%86%85%e5%8c%85%e8%a1%a8%e8%a8%98"></a>
リスト内包表記
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">alist</span><span class="o">=</span><span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">)]</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">alist</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;
</span></span></span><span class="line"><span class="cl"><span class="s1">[]を使用してリストオブジェクトを作成
</span></span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">alist</span><span class="o">=</span><span class="p">(</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">alist</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">出力</span><span class="err">：</span>
</span></span><span class="line"><span class="cl"><span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;
</span></span></span><span class="line"><span class="cl"><span class="s1">この場合、alistはジェネレータオブジェクト
</span></span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;</span>
</span></span></code></pre></div><h4 id="yield">
<a class="header-anchor" href="#yield"></a>
yield
</h4><p>yieldとrenturnの違い</p>
<ul>
<li>関数がyieldに到達すると、関数の実行は一時停止し、yieldの後の値が返されます。</li>
<li>yieldに何も値が続いていない場合、Noneが返されます。</li>
<li>yieldは値を返しますが、関数は終了しません。この関数を割り当てた識別子を再度呼び出すと、関数は実行を継続します。</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">generator</span><span class="p">():</span>
</span></span><span class="line"><span class="cl">    <span class="n">top</span><span class="o">=</span><span class="mi">5</span>
</span></span><span class="line"><span class="cl">    <span class="n">i</span><span class="o">=</span><span class="mi">0</span>
</span></span><span class="line"><span class="cl">    <span class="k">while</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">top</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;現在の値：&#39;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">        <span class="n">i</span><span class="o">+=</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl">        <span class="k">yield</span> <span class="n">i</span>
</span></span><span class="line"><span class="cl">    <span class="k">raise</span> <span class="ne">StopIteration</span>
</span></span><span class="line"><span class="cl"><span class="n">gen</span><span class="o">=</span><span class="n">generator</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">gen</span><span class="p">))</span>
</span></span></code></pre></div>
        
        <hr><p>この記事は2023-08-27に<a href='https://www.guzhengsvt.cn/'>孤筝の温暖小家</a>で公開され、最終更新日は2023-08-27です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]></description><category>Code</category></item><item><title>Pythonその他のノート</title><link>https://www.guzhengsvt.cn/ja/post/code/python%E5%85%B6%E4%BB%96%E7%AC%94%E8%AE%B0/</link><pubDate>Tue, 27 Jun 2023 00:57:42 +0800</pubDate><author>lvbowen040427@163.com (孤筝)</author><guid>https://www.guzhengsvt.cn/ja/post/code/python%E5%85%B6%E4%BB%96%E7%AC%94%E8%AE%B0/</guid><description>
<![CDATA[<h1>Pythonその他のノート</h1><p>著者: 孤筝(lvbowen040427@163.com)</p>
        
          <h2 id="コメント">
<a class="header-anchor" href="#%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88"></a>
コメント
</h2><ul>
<li>単行コメント
$\#$内容</li>
<li>複数行コメント</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;
</span></span></span><span class="line"><span class="cl"><span class="s1">こんにちは、ここ緑色の部分はコメントです
</span></span></span><span class="line"><span class="cl"><span class="s1">ここもコメントです
</span></span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="n">ここはコメントではありません</span>
</span></span><span class="line"><span class="cl"><span class="c1">#単行コメント</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;&#39;&#39;&#39;ここはコメントではありません&#39;&#39;&#39;見えますか？プリントされますか？&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">a</span><span class="o">=</span><span class="s1">&#39;&#39;&#39;こんにちは&#39;&#39;&#39;</span><span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="n">ターミナル</span><span class="err">：</span><span class="ne">SyntaxError</span><span class="p">:</span> <span class="n">invalid</span> <span class="n">syntax</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;
</span></span></span><span class="line"><span class="cl"><span class="s1">このように書くとエラーが発生します。コードの途中にコメントを挿入すると実行に影響するようです
</span></span></span><span class="line"><span class="cl"><span class="s1">複数行文字列は&#39;&#39;&#39;</span><span class="n">文字列</span><span class="s1">&#39;&#39;&#39;で定義できますが、コメントが代入操作として解釈されるため、上記のエラーは末尾の1を指しています
</span></span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;</span>
</span></span></code></pre></div><h2 id="エンコーディング形式">
<a class="header-anchor" href="#%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e5%bd%a2%e5%bc%8f"></a>
エンコーディング形式
</h2><ul>
<li>Python 2.xでは、ソースファイルのデフォルトエンコーディング形式はASCIIです。漢字が含まれている場合、エンコーディング形式を指定しないと正しく読み込んだり出力したりできません。以下のコードをソースファイルの先頭に置くことで、エンコーディング形式をUTF-8に指定できます。</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># -*- coding: UTF-8 -*-</span>
</span></span></code></pre></div><p>Python 3.xでは、ソースファイルのデフォルトエンコーディング形式はUTF-8です。そのため、Python 3.xを使用する場合、通常はエンコーディング形式を指定する必要はありません。</p>
<h2 id="識別子">
<a class="header-anchor" href="#%e8%ad%98%e5%88%a5%e5%ad%90"></a>
識別子
</h2><ul>
<li>識別子はソフトウェアプログラミングにおける一般的な概念で、==変数、関数、インターフェース、クラス==などに名前を付けるために使用されます。</li>
<li>Pythonの識別子は大文字と小文字を区別し、アルファベット、数字、アンダースコアで構成されます。最初の文字はアルファベットまたはアンダースコアでなければならず、数字で始めることはできません。Python 3.xでは、日本語を識別子として使用できます。</li>
<li>アンダースコアで始まる識別子は特別な意味を持ちます。
<ul>
<li>単一のアンダースコアで始まる識別子（例：$\_name$）は、直接アクセスできないクラス属性を表し、クラスが提供するインターフェースを通じてのみアクセスできます。</li>
<li>二重のアンダースコアで始まる識別子（例：$\_\_age$）は、クラスのプライベートメンバーを表します。</li>
<li>二重のアンダースコアで始まり終わる識別子（例：$\_\_init\_\_()$はクラスのコンストラクタ）は、Pythonの組み込み識別子を表します。</li>
</ul>
</li>
</ul>

        
        <hr><p>この記事は2023-06-27に<a href='https://www.guzhengsvt.cn/'>孤筝の温暖小家</a>で公開され、最終更新日は2023-06-27です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]></description><category>Code</category></item><item><title>Python基礎関数</title><link>https://www.guzhengsvt.cn/ja/post/code/python%E5%9F%BA%E7%A1%80%E5%87%BD%E6%95%B0/</link><pubDate>Tue, 27 Jun 2023 00:55:01 +0800</pubDate><author>lvbowen040427@163.com (孤筝)</author><guid>https://www.guzhengsvt.cn/ja/post/code/python%E5%9F%BA%E7%A1%80%E5%87%BD%E6%95%B0/</guid><description>
<![CDATA[<h1>Python基礎関数</h1><p>著者: 孤筝(lvbowen040427@163.com)</p>
        
          <h2 id="関数の引数渡し">
<a class="header-anchor" href="#%e9%96%a2%e6%95%b0%e3%81%ae%e5%bc%95%e6%95%b0%e6%b8%a1%e3%81%97"></a>
関数の引数渡し
</h2><p>Pythonでは、関数に引数を渡すことは本質的に代入操作です</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">arr</span> <span class="o">=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">a</span><span class="o">=</span><span class="mi">2</span>
</span></span><span class="line"><span class="cl"><span class="n">func</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
</span></span></code></pre></div><ol>
<li>最初に2つの変数arrとaがあり、2つのオブジェクト1と2があります</li>
<li>aは2にバインドされ、func(a)はaがバインドしているオブジェクト2にarrというラベルを貼ります</li>
<li>この時点で、オブジェクト1はまだ作成されておらず、2にはaとarrのラベルが貼られています</li>
<li>$arr=1$操作により、2からarrラベルが剥がされ、オブジェクト1が作成されてarrラベルが貼られます</li>
<li>出力結果</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="mi">2</span>
</span></span></code></pre></div><h2 id="入力と出力">
<a class="header-anchor" href="#%e5%85%a5%e5%8a%9b%e3%81%a8%e5%87%ba%e5%8a%9b"></a>
入力と出力
</h2><h3 id="print関数">
<a class="header-anchor" href="#print%e9%96%a2%e6%95%b0"></a>
print()関数
</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;文字列&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">文字列</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;str1&#34;</span><span class="p">,</span><span class="s2">&#34;str2&#34;</span><span class="p">,</span><span class="s2">&#34;str3&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">str1</span> <span class="n">str2</span> <span class="n">str3</span><span class="c1">#カンマがスペースに置き換わる</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">**</span><span class="n">c</span><span class="p">)</span><span class="c1">#数値を計算してから出力</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="o">/</span><span class="n">c</span><span class="p">))</span><span class="c1">#sum()関数が優先的に実行</span>
</span></span></code></pre></div><p><strong>==プロトタイプ==</strong>
</p>
$$print(self,*args,sep=' ',end='\n',file=None)$$<ul>
<li>sepパラメータ：区切り文字、複数の出力結果（戻り値）間の区切り文字、デフォルトはスペースで手動設定可能</li>
<li>endパラメータ：印刷後の終了方法、デフォルトは$\n$改行、&rsquo; &lsquo;に設定すると改行なし</li>
</ul>
<h3 id="input関数">
<a class="header-anchor" href="#input%e9%96%a2%e6%95%b0"></a>
input()関数
</h3><p><strong>ユーザー入力を取得し、==文字列==として保存</strong>
数字が入力された場合、int()でオブジェクトを数字に変換可能</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">age</span><span class="o">=</span><span class="nb">input</span><span class="p">(</span><span class="s2">&#34;年齢を入力してください:&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">年齢を入力してください</span><span class="p">:</span><span class="mi">18</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="n">age</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;18&#39;</span><span class="c1">#type(age)==&lt;class&#39;str&#39;&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">age</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">age</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="n">age</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="mi">18</span>
</span></span></code></pre></div><ul>
<li>$input()$には文字列を渡せば、入力プロンプトとして表示される</li>
<li>$int()$を使用する際、余分なスペースがあれば$strip()$メソッドで除去可能、文字列オブジェクト保存時も同様</li>
<li>$input()$は改行を消費し、プログラム実行を一時停止するために使用可能
[[データ型と演算子#文字列フォーマット]]</li>
</ul>
<h2 id="ユーティリティ関数">
<a class="header-anchor" href="#%e3%83%a6%e3%83%bc%e3%83%86%e3%82%a3%e3%83%aa%e3%83%86%e3%82%a3%e9%96%a2%e6%95%b0"></a>
ユーティリティ関数
</h2><h3 id="id">
<a class="header-anchor" href="#id"></a>
id()
</h3><p>例
[[データ型と演算子#代入方法]]
id(変数名)で変数がバインドする<strong>オブジェクト</strong>のメモリアドレスを取得
変数がバインドするオブジェクトが変更されると、クエリ結果も変更され、元のオブジェクトのメモリアドレスは変わらない</p>
<h3 id="type">
<a class="header-anchor" href="#type"></a>
type()
</h3><ul>
<li>1つの引数で<strong>オブジェクト</strong>の型を返す</li>
<li>3つの引数で新しいオブジェクト型を返す
<ul>
<li>type(name,bases,dict)</li>
<li>name &ndash; クラスの名称</li>
<li>bases &ndash; 基底クラスのタプル</li>
<li>dict &ndash; 辞書、クラス内で定義された名前空間変数</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># パラメータの一例</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="err">```</span><span class="n">python</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">type</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nb">type</span> <span class="s1">&#39;int&#39;</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">type</span><span class="p">(</span><span class="s1">&#39;runoob&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nb">type</span> <span class="s1">&#39;str&#39;</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">type</span><span class="p">([</span><span class="mi">2</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nb">type</span> <span class="s1">&#39;list&#39;</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">type</span><span class="p">({</span><span class="mi">0</span><span class="p">:</span><span class="s1">&#39;zero&#39;</span><span class="p">})</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nb">type</span> <span class="s1">&#39;dict&#39;</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">type</span><span class="p">(</span> <span class="n">x</span> <span class="p">)</span> <span class="o">==</span> <span class="nb">int</span> <span class="c1"># 型が等しいかどうかを判断する</span>
</span></span><span class="line"><span class="cl"><span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 3つの引数</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="k">class</span> <span class="nc">X</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="o">...</span> <span class="n">a</span> <span class="o">=</span> <span class="mi">1</span> 
</span></span><span class="line"><span class="cl">    <span class="o">...</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">X</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="s1">&#39;X&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nb">object</span><span class="p">,),</span> <span class="nb">dict</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span> <span class="c1"># 新しい型 X を生成する</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">X</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="k">class</span> <span class="err">&#39;</span><span class="nc">__main__</span><span class="o">.</span><span class="n">X</span><span class="s1">&#39;&gt;</span>
</span></span></code></pre></div><h3 id="next">
<a class="header-anchor" href="#next"></a>
next()
</h3><p>[[基礎データ構造#イテレータオブジェクト]]</p>
<h2 id="文字列関数">
<a class="header-anchor" href="#%e6%96%87%e5%ad%97%e5%88%97%e9%96%a2%e6%95%b0"></a>
文字列関数
</h2><h3 id="文字列オブジェクトの組み込み関数">
<a class="header-anchor" href="#%e6%96%87%e5%ad%97%e5%88%97%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%ae%e7%b5%84%e3%81%bf%e8%be%bc%e3%81%bf%e9%96%a2%e6%95%b0"></a>
文字列オブジェクトの組み込み関数
</h3><ol>
<li>先頭と末尾の空白または文字を削除する$lstrip()$,$rstrip()$,$strip()$</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">str</span><span class="o">=</span><span class="s2">&#34;    人生苦短，我用Python。    &#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="o">.</span><span class="n">lstrip</span><span class="p">())</span><span class="c1">#左側の空白を削除して出力</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="o">.</span><span class="n">rstrip</span><span class="p">())</span><span class="c1">#右側の空白を削除して出力</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span><span class="c1">#左右の空白を削除して出力</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">str_1</span><span class="o">=</span><span class="s1">&#39;333与君相别离，不知何日是归期，我如朝露转瞬晞。333&#39;</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">str_1</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">&#39;3&#39;</span><span class="p">))</span><span class="c1">#左右のすべての文字&#39;3&#39;を削除して出力</span>
</span></span></code></pre></div><p>==注意：この関数は本質的に文字列の一部を切り取るものであり、元のオブジェクトを変更するものではない==
$lstrip()$は、文字列の左側の空白または指定された文字を削除した<strong>新しい文字列</strong>を返します。</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">str</span><span class="o">=</span><span class="s2">&#34;    人生苦短，我用Python。    &#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">str</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span><span class="c1">#関数を呼び出すだけで代入も出力も行わない</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;
</span></span></span><span class="line"><span class="cl"><span class="s1">この場合の出力結果は依然として
</span></span></span><span class="line"><span class="cl"><span class="s1">    人生苦短，我用Python。    
</span></span></span><span class="line"><span class="cl"><span class="s1">左右ともに空白を含む
</span></span></span><span class="line"><span class="cl"><span class="s1">オブジェクトが変更されていないことを示す
</span></span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;</span>
</span></span></code></pre></div><ol start="2">
<li>文字列が特定の文字列で始まる/終わるかどうかを判定する$startswith()$,$endswith()$
該当すればTrue、しなければFalseを返す</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">str</span><span class="o">=</span><span class="s2">&#34;山有木兮木有枝，心悦君兮君不知。&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="o">.</span><span class="n">starswith</span><span class="p">(</span><span class="s2">&#34;山&#34;</span><span class="p">))</span><span class="c1">#Trueを返して出力</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">&#39;不知&#39;</span><span class="p">))</span><span class="c1">#&#39;。&#39;がないためFalseを返して出力</span>
</span></span></code></pre></div><ol start="3">
<li>
<p>文字列をフォーマットする</p>
$$f"文字列内容{他の文字列変数名}文字列内容"$$<p>
フォーマットされた文字列を返す
<a href="">未記入</a></p>
</li>
<li>
<p>文字列を分割する$split()$
特定の文字で文字列をいくつかの部分文字列に分割し、部分文字列には区切り文字を含まず、文字列リストを返す</p>
</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">str</span><span class="o">=</span><span class="s1">&#39;根，紧握在地下，叶，相触在云里，每一阵风过，我们都互相致意。&#39;</span>
</span></span><span class="line"><span class="cl"><span class="n">strP</span><span class="o">=</span><span class="nb">str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;，&#39;</span><span class="p">)</span><span class="c1">#中英文の句読点に注意</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">str</span><span class="p">)</span><span class="c1">#元の文字列オブジェクトを出力</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">strP</span><span class="p">)</span><span class="c1">#分割して得られた文字列リストを出力</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">strP</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="c1">#&#34;紧握在地下&#34;を出力</span>
</span></span></code></pre></div><h2 id="数値処理関数">
<a class="header-anchor" href="#%e6%95%b0%e5%80%a4%e5%87%a6%e7%90%86%e9%96%a2%e6%95%b0"></a>
数値処理関数
</h2><ol>
<li>絶対値

$$abs()$$</li>
<li>切り捨て

$$int()$$</li>
<li>四捨五入（整数を返す）

$$round()$$</li>
<li>大小・真偽の判定（ブール関数）

$$bool()$$
[[データ型と演算子#ブール値と空値]]</li>
</ol>
<h2 id="データ型変換関数">
<a class="header-anchor" href="#%e3%83%87%e3%83%bc%e3%82%bf%e5%9e%8b%e5%a4%89%e6%8f%9b%e9%96%a2%e6%95%b0"></a>
データ型変換関数
</h2><ol>
<li>
$$int(x [,base])$$
xは元のオブジェクト、baseはオプションのパラメータで、デフォルトは10（10進数を表す）</li>
<li>
$$float(x)$$</li>
<li>
$$complex(real[,imag])$$
realは実部、imagはオプションの虚部パラメータ</li>
<li>
$$str(x)$$</li>
<li>
$$repr(x)$$
オブジェクトxを式の文字列に変換（Pythonインタプリタが読み取れる形式）</li>
<li>
$$chr(x)$$
整数を1文字に変換</li>
<li>
$$ord(x)$$
1文字をその整数値に変換</li>
<li>
$$hex(x)$$
整数xを16進形式の<strong>文字列</strong>に変換</li>
<li>
$$oct(x)$$
整数xを8進形式==文字列==に変換</li>
<li>
$$eval(str)$$
文字列内の有効なPython式を評価し、オブジェクトを返す</li>
<li>
$$tuple(s)$$
シーケンスsをタプルに変換して返す</li>
<li>
$$list(s)$$</li>
<li>
$$set(s)$$
シーケンスsを可変集合に変換</li>
<li>
$$frozenset(s)$$
シーケンスsを不変集合に変換</li>
<li>
$$dict(d)$$
(key,value)形式のタプルシーケンスdをdictに変換</li>
</ol>
<h3 id="データ型の高低">
<a class="header-anchor" href="#%e3%83%87%e3%83%bc%e3%82%bf%e5%9e%8b%e3%81%ae%e9%ab%98%e4%bd%8e"></a>
データ型の高低
</h3><ol>
<li>
<p>「高いデータ型」と「低いデータ型」は==暗黙的な型変換==においてデータの精度を説明するための概念。</p>
</li>
<li>
<p>==精度==はデータ型が表現できる情報量や詳細度と理解できる。Pythonでは、データ型の「高」「低」は主にその精度によって判断される。</p>
</li>
<li>
<p>ここでの「高い」データ型とは、より多くの情報（またはより正確な情報）を表現できるデータ型を指し、「低い」データ型は表現できる情報が少ない。
具体的には、浮動小数点数は整数よりも「高い」、なぜなら浮動小数点数は整数だけでなく小数も表現できるから。したがって、例では整数は自動的に浮動小数点数に変換され、情報が失われないよう保証される。</p>
</li>
<li>
<p>また、複素数（complex）は浮動小数点数（float）や整数（int）よりも「高い」、なぜなら複素数は実数と虚数を表現できるが、浮動小数点数と整数は実数のみを表現できるから。演算時にオペランドに複素数が含まれる場合、他の浮動小数点数や整数は複素数に変換される。</p>
</li>
<li>
<p>一般的に、Pythonのデータ型の「高低」は以下の順序で理解できる：
ブール（bool）&lt; 整数型（int） &lt; 浮動小数点型（float）&lt; 複素数型（complex）。
この順序は主にデータ型が表現できる情報範囲と精度によって決定される。</p>
</li>
</ol>
<h4 id="異なるデータ型間で自由に変換できるか">
<a class="header-anchor" href="#%e7%95%b0%e3%81%aa%e3%82%8b%e3%83%87%e3%83%bc%e3%82%bf%e5%9e%8b%e9%96%93%e3%81%a7%e8%87%aa%e7%94%b1%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%a7%e3%81%8d%e3%82%8b%e3%81%8b"></a>
異なるデータ型間で自由に変換できるか
</h4><p>Pythonはいくつかの組み込み関数を提供して異なるデータ型間の変換を実現しているが、例えば$int(), float(), str(), list(), tuple(), set()$など、すべての型のデータが他の任意の型に変換できるわけではない。変換が可能かどうかは、主にデータ自体が<strong>目標の型を表現するのに十分な情報を含んでいるか</strong>による。</p>
<p>例：
整数を文字列に簡単に変換できる、なぜならすべての整数には明確な文字列表現があるから（例えば、整数123は文字列&quot;123&quot;として表現できる）。</p>
<p>同様に、数字のみを含む文字列（例：&ldquo;123&rdquo;）は整数や浮動小数点数に変換できる、なぜならこの文字列には数字を表現するのに十分な情報が含まれているから。</p>
<p>しかし：
数字以外の文字列（例：&ldquo;Hello&rdquo;）は整数や浮動小数点数に変換できない、なぜならこの文字列には数字を表現する情報が含まれていないから。</p>
<p>リストやタプルは、（その要素が不変であれば）集合に変換できるが、整数には変換できない、なぜなら集合やリストの要素を単一の数字として合理的に表現できないから。</p>
<p>総じて、データ型の変換は==無制限ではない==、それは<strong>元のデータが目標の型を表現するのに十分な情報を提供できるか</strong>による。プログラミングで型変換を行う際、この点に注意が必要。</p>
<h2 id="判断とループ文">
<a class="header-anchor" href="#%e5%88%a4%e6%96%ad%e3%81%a8%e3%83%ab%e3%83%bc%e3%83%97%e6%96%87"></a>
判断とループ文
</h2><h3 id="文">
<a class="header-anchor" href="#%e6%96%87"></a>
$if,elif,else$文
</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">if</span> <span class="n">condition1</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">条件1が成立する場合の操作</span>
</span></span><span class="line"><span class="cl"><span class="k">elif</span> <span class="n">condition2</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">条件1が不成立で条件2が成立する場合の操作</span>
</span></span><span class="line"><span class="cl"><span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">条件1</span><span class="p">,</span><span class="mi">2</span><span class="n">ともに不成立の場合の操作</span>
</span></span></code></pre></div><p>例:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">name</span><span class="o">=</span><span class="nb">input</span><span class="p">(</span><span class="s1">&#39;Who are you?&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">age</span><span class="o">=</span><span class="nb">input</span><span class="p">(</span><span class="s1">&#39;How ord are you?&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="n">name</span><span class="o">==</span><span class="s1">&#39;朱冰倩&#39;</span><span class="ow">and</span> <span class="n">age</span><span class="o">&gt;=</span><span class="mi">19</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Daring,long time no see.&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="k">elif</span> <span class="n">name</span><span class="o">==</span><span class="s1">&#39;朱冰倩&#39;</span> <span class="ow">and</span> <span class="n">age</span><span class="o">==</span><span class="mi">18</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Thank you for being in my life.&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="k">else</span><span class="p">:</span><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;こんにちわ。&#39;</span><span class="p">)</span>
</span></span></code></pre></div><ul>
<li>偽値: None、空リスト、空集合、空辞書、空タプル、空文字列、0、Falseなど</li>
<li>真値: 非空リスト、非空集合、非空辞書、非空タプル、非空文字列、非0数値、Trueなど</li>
</ul>
<h3 id="文-1">
<a class="header-anchor" href="#%e6%96%87-1"></a>
$for,break,continue$文
</h3><h4 id="通常のループ">
<a class="header-anchor" href="#%e9%80%9a%e5%b8%b8%e3%81%ae%e3%83%ab%e3%83%bc%e3%83%97"></a>
通常のループ
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">シーケンス</span><span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">tupleなど</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="n">実行コードブロック</span>
</span></span></code></pre></div><ul>
<li>forはシーケンス中の要素を順番にxに代入する</li>
</ul>
<h4 id="インデックス付きループ">
<a class="header-anchor" href="#%e3%82%a4%e3%83%b3%e3%83%87%e3%83%83%e3%82%af%e3%82%b9%e4%bb%98%e3%81%8d%e3%83%ab%e3%83%bc%e3%83%97"></a>
インデックス付きループ
</h4><ul>
<li>ループ中にインデックスも取得したい場合、$enumerate()$関数を使用できる</li>
<li>$enumerate()$関数は、リストやタプル、文字列などの反復可能オブジェクトをインデックス付きで返す
<ul>
<li>Python 2.3以上で使用可能、2.6でstartパラメータ追加</li>
</ul>
</li>
<li>
$$enumerate(sequence,[start=0])$$<ul>
<li>sequence: 反復可能オブジェクト</li>
<li>start(オプション): インデックスの開始値、デフォルトは0</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">galgames</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;咖啡馆&#39;</span><span class="p">,</span><span class="s1">&#39;千恋万花&#39;</span><span class="p">,</span><span class="s1">&#39;天使骚骚&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">index</span><span class="p">,</span><span class="n">galgame</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">galgames</span><span class="p">,</span><span class="mi">1</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;今日は</span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s1">番目の作品</span><span class="si">{</span><span class="n">galgame</span><span class="si">}</span><span class="s1">をプレイ。&#39;</span><span class="p">)</span>
</span></span></code></pre></div><p>出力:
今日は1番目の作品咖啡馆をプレイ。
今日は2番目の作品千恋万花をプレイ。
今日は3番目の作品天使骚骚をプレイ。</p>
<h4 id="break">
<a class="header-anchor" href="#break"></a>
break
</h4><p>現在のループを中断、異なる階層のbreakは異なるループを中断する</p>
<h4 id="continue">
<a class="header-anchor" href="#continue"></a>
continue
</h4><p>continueは後続のコード実行を停止し、次のループに移行する</p>
<h4 id="for-else">
<a class="header-anchor" href="#for-else"></a>
for-else
</h4><ul>
<li>forループ後にforと同じ階層のelseを記述、forループが正常終了した場合、自動的にelseに入る</li>
<li>breakで中断された場合(continueは正常と見なす)、else分岐に入らない</li>
</ul>
<h3 id="while文">
<a class="header-anchor" href="#while%e6%96%87"></a>
while文
</h3><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">while</span> <span class="n">条件式</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">実行文</span>
</span></span></code></pre></div><p>条件式が成立(True)している間、実行文をループ実行；不成立の場合、ループを抜ける
==無限ループを避けるため、実行文がループ条件を破るかbreakをトリガーできるか確認==</p>
<h4 id="while-else">
<a class="header-anchor" href="#while-else"></a>
while-else
</h4><p>for-elseと同様、breakで中断されずにwhileループが終了した場合、後続のelse分岐を実行；異常終了した場合elseは実行されない</p>

        
        <hr><p>この記事は2023-06-27に<a href='https://www.guzhengsvt.cn/'>孤筝の温暖小家</a>で公開され、最終更新日は2023-06-27です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]></description><category>Code</category></item><item><title>Pythonのデータ型と演算子</title><link>https://www.guzhengsvt.cn/ja/post/code/python%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E5%8F%8A%E8%BF%90%E7%AE%97%E7%AC%A6/</link><pubDate>Tue, 27 Jun 2023 00:49:20 +0800</pubDate><author>lvbowen040427@163.com (孤筝)</author><guid>https://www.guzhengsvt.cn/ja/post/code/python%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E5%8F%8A%E8%BF%90%E7%AE%97%E7%AC%A6/</guid><description>
<![CDATA[<h1>Pythonのデータ型と演算子</h1><p>著者: 孤筝(lvbowen040427@163.com)</p>
        
          <h2 id="定数と変数">
<a class="header-anchor" href="#%e5%ae%9a%e6%95%b0%e3%81%a8%e5%a4%89%e6%95%b0"></a>
定数と変数
</h2><ul>
<li>変数は型宣言不要</li>
<li>Pythonでは$=$で変数に値を代入し、$==$で二つの値が等しいか比較し、等しければTrue、等しくなければFalseを返す。</li>
<li>変数は使用前に必ず代入が必要（C言語とは異なり）、変数は代入後に初めて作成される。
<ul>
<li>変数未定義エラー</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">age</span>
</span></span><span class="line"><span class="cl"><span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="n">File</span> <span class="s2">&#34;&lt;stdin&gt;&#34;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1</span><span class="p">,</span> <span class="ow">in</span> <span class="o">&lt;</span><span class="n">module</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="ne">NameError</span><span class="p">:</span> <span class="n">name</span> <span class="s1">&#39;age&#39;</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">defined</span>
</span></span></code></pre></div><p>定数——変化しない変数
<strong>Pythonには変数がオブジェクトを変更しないことを保証する仕組みがなく、変更されてもエラーが出ず、C言語のconstのようなものがないため、使用時には十分注意が必要</strong></p>
<h2 id="代入方法">
<a class="header-anchor" href="#%e4%bb%a3%e5%85%a5%e6%96%b9%e6%b3%95"></a>
代入方法
</h2><p>代入演算子$=$は==右結合性==</p>
<ul>
<li>
<p>単一の代入</p>
<ul>
<li>age = 18</li>
</ul>
</li>
<li>
<p>一括代入</p>
<ul>
<li>a = b = c = 1
<ul>
<li>これはC/C++では考えられない:(</li>
</ul>
</li>
</ul>
</li>
<li>
<p>計算後に代入</p>
<ul>
<li>age = 17+1</li>
</ul>
</li>
<li>
<p>個別代入</p>
<ul>
<li>a,b,c=1,2,3
<ul>
<li>a == 1,b == 2,c == 3</li>
</ul>
</li>
</ul>
<p>a = &ldquo;Jack&quot;と書いた時、Pythonインタプリタは以下の2つのことを行う：
メモリに&rsquo;Jack&rsquo;という文字列オブジェクト（定数）を作成；
メモリにaという名前の変数を作成し、&lsquo;Jack&rsquo;を指すようにする。
変数aを別の変数bに代入する操作は、実際には==変数bを変数aが指すデータに向ける==ことであり、例えば以下のコード：</p>
</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span> <span class="o">=</span> <span class="s2">&#34;Jack&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;Jack&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">b</span> <span class="o">=</span> <span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;Jack&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">id</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="mi">4332916664</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span> <span class="nb">id</span><span class="p">(</span><span class="n">b</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="mi">4332916664</span>
</span></span></code></pre></div><p><em><strong>id()関数は変数のメモリアドレスを確認するために使用</strong></em>
[[基礎関数#id()]]</p>
<ul>
<li>もし別の変数をaに代入すると、id(a)は変わり、id(b)は変わらない</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">a</span> <span class="o">=</span> <span class="s2">&#34;Ross&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">a</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;Ross&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">id</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">別の数値</span><span class="err">（</span><span class="mi">4332916664</span><span class="n">とは異なる</span><span class="err">）</span>
</span></span></code></pre></div><h2 id="変数とオブジェクト">
<a class="header-anchor" href="#%e5%a4%89%e6%95%b0%e3%81%a8%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88"></a>
変数とオブジェクト
</h2><blockquote>
<p>Pythonではすべてがオブジェクトであり、数字もオブジェクト、リストもオブジェクト、関数もオブジェクト、何もかもがオブジェクト。変数はオブジェクトへの参照（またはラベルや名前とも呼ばれる）であり、オブジェクトの操作はすべて参照を通じて行われる。</p>
</blockquote>
<p>例えば</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">a</span> <span class="o">=</span> <span class="mi">1</span>
</span></span></code></pre></div><ul>
<li>この場合、数字1がオブジェクト、aが変数（変数名）</li>
<li>代入操作$=$は名前をオブジェクトにバインドする（オブジェクト1にラベルaを付ける）。</li>
<li>明らかに、オブジェクトは複数のラベル（変数）をバインドできる。しかし、一つの変数は一つのオブジェクトしかバインドできない。</li>
<li><strong>変数自体には型がなく、型はオブジェクト内に保存され、オブジェクトの型によって決定される</strong>
<ul>
<li>そのためPythonでは変数の型を事前に宣言する必要がなく、オブジェクトのデータ型を自動的に判断する。これはC/C++と大きく異なる点</li>
</ul>
</li>
</ul>
<h2 id="文字列">
<a class="header-anchor" href="#%e6%96%87%e5%ad%97%e5%88%97"></a>
文字列
</h2><ol>
<li>Pythonでは単一文字と文字列を区別しない</li>
<li>シングルクォート$''$またはダブルクォート$""$で文字列を作成できる（混在不可！）</li>
<li>トリプルシングルクォートまたはトリプルダブルクォートで複数行の文字列を作成可能</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">name_1</span><span class="o">=</span><span class="s1">&#39;Jack&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">name_2</span><span class="o">=</span><span class="s2">&#34;Rose&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">sentence_1</span><span class="o">=</span><span class="s1">&#39;&#39;&#39;Rose,
</span></span></span><span class="line"><span class="cl"><span class="s1">Jack,
</span></span></span><span class="line"><span class="cl"><span class="s1">You jump,
</span></span></span><span class="line"><span class="cl"><span class="s1">I jump!&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">sentence_2</span><span class="o">=</span><span class="s2">&#34;&#34;&#34;Life is short,
</span></span></span><span class="line"><span class="cl"><span class="s2">you need Python.&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl"><span class="c1">#完璧に動作！</span>
</span></span></code></pre></div><ul>
<li>クォートを使用したい場合はエスケープ文字&rdquo;\&ldquo;を追加
[[基礎関数#文字列関数]]</li>
</ul>
<h3 id="文字列フォーマット">
<a class="header-anchor" href="#%e6%96%87%e5%ad%97%e5%88%97%e3%83%95%e3%82%a9%e3%83%bc%e3%83%9e%e3%83%83%e3%83%88"></a>
文字列フォーマット
</h3><h4 id="メソッド">
<a class="header-anchor" href="#%e3%83%a1%e3%82%bd%e3%83%83%e3%83%89"></a>
%メソッド
</h4>$$print('My\ wife\ is\ \%c,she\ is\ \%d.\ '\%(name,age))$$<ul>
<li>$\%$の後はtuple|dictで、フォーマットする値を渡す</li>
<li>プレースホルダの種類：
![[Pasted image 20230628233506.png]]</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;ブローニャ&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">age</span><span class="o">=</span><span class="mi">18</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;My wife`s name is </span><span class="si">%s</span><span class="s1">,she is </span><span class="si">%d</span><span class="s1"> years old.&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="n">age</span><span class="p">))</span><span class="c1">#順番に%は文字列後の%()内の内容に対応</span>
</span></span><span class="line"><span class="cl"><span class="n">My</span> <span class="n">wife</span><span class="err">`</span><span class="n">s</span> <span class="n">name</span> <span class="ow">is</span> <span class="n">ブローニャ</span><span class="p">,</span><span class="n">she</span> <span class="ow">is</span> <span class="mi">18</span> <span class="n">years</span> <span class="n">old</span><span class="o">.</span>
</span></span></code></pre></div><ul>
<li><strong>応用</strong>
<ul>
<li>
$$\%[データ名][整列フラグ][幅].[精度][型]$$</li>
<li>データ名はdict代入用、配列の場合は記入不要</li>
<li>整列フラグ
<ul>
<li>+：正負符号表示</li>
<li>-：左揃え</li>
<li>space：正数の前にspaceを追加して負数と揃える</li>
<li>0：正数の前に0を追加して負数と揃える</li>
</ul>
</li>
<li>幅：フォーマット後の文字列長、不足分は0またはスペースで埋める</li>
<li>精度：小数点以下の桁数</li>
<li>データ型：プレースホルダの種類</li>
</ul>
</li>
</ul>
<h4 id="format">
<a class="header-anchor" href="#format"></a>
format
</h4><ul>
<li>文字列中で$\{ \}$を使用してプレースホルダを設定し、文字列の後に$.format()$関数を続ける。この関数の引数が文字列に埋め込む変数。</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;キアナ&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">age</span><span class="o">=</span><span class="mi">18</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;My wife is </span><span class="si">{}</span><span class="s1">,she is </span><span class="si">{}</span><span class="s1">.&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="n">age</span><span class="p">))</span><span class="c1">#順番に埋め込む</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;My wife is </span><span class="si">{1}</span><span class="s1">,she is </span><span class="si">{0}</span><span class="s1">.&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">age</span><span class="p">,</span><span class="n">name</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;
</span></span></span><span class="line"><span class="cl"><span class="si">{}</span><span class="s1">内でインデックス使用可能
</span></span></span><span class="line"><span class="cl"><span class="si">{}</span><span class="s1">内の数字は.format()のタプル/辞書のインデックス
</span></span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;My wife is </span><span class="si">{name}</span><span class="s1">,she is </span><span class="si">{age}</span><span class="s1">.&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span><span class="n">age</span><span class="o">=</span><span class="n">age</span><span class="p">))</span><span class="c1">#変数名で直接置換も可能（オブジェクト属性マッピング）</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;My wife is </span><span class="si">{name}</span><span class="s1">,she is </span><span class="si">{age}</span><span class="s1">.&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;キアナ&#39;</span><span class="p">,</span><span class="n">age</span><span class="o">=</span><span class="mi">18</span><span class="p">))</span><span class="c1">#キーワードマッピング</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">list1</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;キアナ&#39;</span><span class="p">,</span><span class="mi">18</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;My wife is </span><span class="si">{0[0]}</span><span class="s2">,she is </span><span class="si">{0[1]}</span><span class="s2">.&#34;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">list1</span><span class="p">))</span><span class="c1">#辞書インデックスでマッピング</span>
</span></span></code></pre></div><ul>
<li><strong>応用</strong>
<ul>
<li>
$$\{:[埋め文字][整列方法][符号フラグ][\#][幅][,][.精度][型]\}$$</li>
<li>埋め文字：未記入時はスペースで埋める</li>
<li>整列方法
<ul>
<li><strong>^</strong>：中央揃え</li>
<li>$`<$：左揃え</li>
<li>$`>$：右揃え</li>
</ul>
</li>
<li>符号フラグ
<ul>
<li>+：正負符号表示</li>
<li>space：正数の前にspaceを追加して負数と揃える</li>
</ul>
</li>
<li>$\#$：2進数、8進数、16進数の前に0b、0o、0xを表示するか</li>
<li>幅：出力文字列の総幅</li>
<li>$,$：千単位区切りを使用</li>
<li>精度：小数点以下の桁数</li>
<li>型：プレースホルダの型</li>
</ul>
</li>
</ul>
<h4 id="f-string">
<a class="header-anchor" href="#f-string"></a>
f-string
</h4><p><em><strong>Formatted String Literals（リテラル文字列フォーマット）、略してf-string、Python3.6以降でサポート</strong></em>
文字列の前に$f$を付け、$f-string$を有効にすると、$\{\}$内で直接変数を使用可能</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;My wife is </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s1">,she is </span><span class="si">{</span><span class="n">age</span><span class="si">}</span><span class="s1">.&#39;</span><span class="p">)</span>
</span></span></code></pre></div><ul>
<li>f-stringもformatのフォーマット制御パラメータをサポート

$$\{変数名:[埋め文字][整列方法][符号フラグ][\#][幅][,][.精度][型]\}$$</li>
</ul>
<h3 id="スライス">
<a class="header-anchor" href="#%e3%82%b9%e3%83%a9%e3%82%a4%e3%82%b9"></a>
⭐スライス
</h3><ul>
<li>スライス可能なオブジェクト：文字列、タプル、リスト

$$name[a:b:c]$$</li>
</ul>
<ol>
<li>選択範囲は$[a,b)$でaを含みbを含まない。aを省略すると0から開始、bを省略すると末尾まで。</li>
<li>cはステップで、スライスの間隔。省略時はデフォルトで1。
==cが負の時は後ろからスライス==</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">name</span><span class="o">=</span><span class="s2">&#34;polaris&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="n">name</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">3</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;ol&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="n">name</span><span class="p">(::</span><span class="o">-</span><span class="mi">3</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;sap&#39;</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;
</span></span></span><span class="line"><span class="cl"><span class="s1">&#39;ris&#39;からs、&#39;ola&#39;からa、&#39;p&#39;からpを取得
</span></span></span><span class="line"><span class="cl"><span class="s1">&#39;&#39;&#39;</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span><span class="p">(</span><span class="n">name</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="s1">&#39;siralop&#39;</span>
</span></span><span class="line"><span class="cl"><span class="c1">#文字列反転</span>
</span></span></code></pre></div><ol start="3">
<li>スライス操作は元のオブジェクトを変更せず、スライス代入でコピーを作成可能</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">x</span><span class="o">=</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">y</span><span class="o">=</span><span class="n">x</span><span class="p">[:]</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">y</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span> <span class="n">x</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="nb">print</span> <span class="n">y</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">]</span>
</span></span></code></pre></div><h2 id="整数浮動小数点数複素数">
<a class="header-anchor" href="#%e6%95%b4%e6%95%b0%e6%b5%ae%e5%8b%95%e5%b0%8f%e6%95%b0%e7%82%b9%e6%95%b0%e8%a4%87%e7%b4%a0%e6%95%b0"></a>
整数、浮動小数点数、複素数
</h2><ol>
<li>
<p>整数（Int）</p>
<ol>
<li>0x16進数</li>
<li>0o8進数</li>
</ol>
</li>
<li>
<p>浮動小数点数（Float）</p>
<ol>
<li>小数形式</li>
<li>科学記数法、10をeで代替
<ul>
<li>例：1.23e-6</li>
</ul>
</li>
</ol>
</li>
<li>
<p>複素数（Complex）</p>
<ol>
<li>実部+虚部、a+bj</li>
<li>complex(a,b)</li>
<li>a&amp;bはともに浮動小数点数</li>
</ol>
</li>
<li>
<p>[[基礎関数#type()]]</p>
</li>
<li>
<p>剰余（除算の整数部分）
</p>
$$a//b$$</li>
<li>
<p>余り
</p>
$$a\%b$$</li>
<li>
<p>絶対値</p>
</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">a</span><span class="o">=</span><span class="mi">10</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">b</span><span class="o">=</span><span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">a</span><span class="o">//</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="n">a</span><span class="o">%</span><span class="n">b</span>
</span></span><span class="line"><span class="cl"><span class="mi">1</span>
</span></span></code></pre></div><h2 id="ブール値とnone値">
<a class="header-anchor" href="#%e3%83%96%e3%83%bc%e3%83%ab%e5%80%a4%e3%81%a8none%e5%80%a4"></a>
ブール値とNone値
</h2><ul>
<li>True：真（非0数値、デフォルト1）</li>
<li>False：偽（=0数値、デフォルト0）</li>
<li>None：空値、0（整数）ではなく、ブール型ではなく<strong>NoneType</strong></li>
</ul>
<ol>
<li>注意事項
<ul>
<li>先頭大文字</li>
<li>すべての計算結果、判断式の呼び出し戻り値がTrueまたはFalseになるプロセスはブール演算と呼べる。例えば比較演算。</li>
</ul>
</li>
<li>以下は偽値に変換
<ul>
<li>0、0.0、-0.0</li>
<li>None</li>
<li>空文字列、空リスト、空タプル、空辞書</li>
</ul>
</li>
<li>以下は真値に変換
<ul>
<li>-1、1または他の非0数値</li>
<li>すべての非空文字列、<code>&quot;False&quot;</code>を含む</li>
<li>すべての非空辞書、非空リスト、非空集合、非空タプル</li>
</ul>
</li>
<li>ブール値は四則演算可能、True == 1、False == 0</li>
</ol>
<h2 id="ブール演算">
<a class="header-anchor" href="#%e3%83%96%e3%83%bc%e3%83%ab%e6%bc%94%e7%ae%97"></a>
ブール演算
</h2><ol>
<li>論理積 $and$
<ul>
<li>すべてがTrueの場合のみ、and演算の結果はTrue</li>
</ul>
</li>
<li>論理和 $or$
<ul>
<li>一つでもTrueがあれば、or演算の結果はTrue</li>
</ul>
</li>
<li>否定 $not$
<ul>
<li><strong>単項演算子</strong>、TrueをFalseに、FalseをTrueに
[[基礎関数#数値処理関数]]</li>
</ul>
</li>
</ol>
<h2 id="演算子">
<a class="header-anchor" href="#%e6%bc%94%e7%ae%97%e5%ad%90"></a>
演算子
</h2><p><strong>Python言語は以下のタイプの演算子をサポート:</strong></p>
<ul>
<li>算術演算子</li>
<li>比較（関係）演算子</li>
<li>代入演算子</li>
<li>論理演算子</li>
<li>ビット演算子</li>
<li>メンバー演算子</li>
<li>同一性演算子</li>
<li>演算子の優先順位</li>
</ul>
<h3 id="算術演算子">
<a class="header-anchor" href="#%e7%ae%97%e8%a1%93%e6%bc%94%e7%ae%97%e5%ad%90"></a>
算術演算子
</h3><ul>
<li>$**$：べき乗、$x**y$はxのy乗を返す
==右から左に結合==(右結合性)</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="mi">2</span><span class="o">**</span><span class="mi">2</span><span class="o">**</span><span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="mi">256</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="p">(</span><span class="mi">2</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span><span class="o">**</span><span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="mi">64</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="mi">2</span><span class="o">**</span><span class="p">(</span><span class="mi">2</span><span class="o">**</span><span class="mi">3</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="mi">256</span>
</span></span></code></pre></div><ul>
<li>$//$：剰余、商の整数部分を返す</li>
<li><strong>整数と浮動小数点数の混合演算時、整数は浮動小数点数に変換される</strong></li>
</ul>
<h3 id="比較演算子">
<a class="header-anchor" href="#%e6%af%94%e8%bc%83%e6%bc%94%e7%ae%97%e5%ad%90"></a>
比較演算子
</h3><ul>
<li>$==$：二つの<strong>オブジェクト</strong>が等しいか比較
==Pythonの比較演算子は連鎖可能==

$$a>b==cはa>b\ and\ b==cと等価$$</li>
</ul>
<h3 id="代入演算子">
<a class="header-anchor" href="#%e4%bb%a3%e5%85%a5%e6%bc%94%e7%ae%97%e5%ad%90"></a>
代入演算子
</h3><ul>
<li>$**=$：べき乗代入演算子、
$$c**=aはc=c**aと等価$$</li>
<li>$//=$：剰余代入演算子、
$$c//=aはc=c//aと等価$$</li>
<li>&laquo;=：左シフト代入

$$a<<=2はa=a<<2と等価$$</li>
<li>
<blockquote>
<blockquote>
<p>=：右シフト代入</p>
</blockquote>
</blockquote>
</li>
<li>&amp;=：ビットAND代入

$$a\&=bはa=a\&bと等価$$</li>
<li>|=：ビットOR代入</li>
<li>^=：ビットXOR代入</li>
</ul>
<h3 id="ビット演算子">
<a class="header-anchor" href="#%e3%83%93%e3%83%83%e3%83%88%e6%bc%94%e7%ae%97%e5%ad%90"></a>
ビット演算子
</h3><ul>
<li>$\&$：ビットAND==右結合性==</li>
<li>$|$：ビットOR</li>
<li>^：ビットXOR</li>
<li>~：ビットNOT==右結合性==</li>
<li>$<<$：左シフト</li>
<li>$>>$：右シフト</li>
</ul>
<h3 id="論理演算子">
<a class="header-anchor" href="#%e8%ab%96%e7%90%86%e6%bc%94%e7%ae%97%e5%ad%90"></a>
論理演算子
</h3><ul>
<li>$and$：論理積
<ul>
<li>x and y、xがFalseならFalseを返し、それ以外はyの計算値を返す</li>
</ul>
</li>
<li>$or$：論理和
<ul>
<li>x or y、xが非0ならxの値を返し、それ以外はyの計算値を返す</li>
</ul>
</li>
<li>$not$：論理否定
<ul>
<li>not x、xがTrueならFalse、xがFalseならTrueを返す</li>
<li>==右結合性==</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="kc">True</span> <span class="ow">and</span> <span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="kc">True</span> <span class="ow">and</span> <span class="kc">False</span>
</span></span><span class="line"><span class="cl"><span class="kc">False</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="kc">False</span> <span class="ow">and</span> <span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="kc">False</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="kc">True</span> <span class="ow">and</span> <span class="mi">0</span><span class="o">+</span><span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="mi">3</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="kc">True</span> <span class="ow">or</span> <span class="kc">False</span>
</span></span><span class="line"><span class="cl"><span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="mi">0</span> <span class="ow">or</span> <span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="mi">0</span> <span class="ow">or</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="kc">False</span> <span class="ow">or</span> <span class="mi">31</span>
</span></span><span class="line"><span class="cl"><span class="mi">31</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">&gt;&gt;&gt;</span><span class="ow">not</span> <span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="kc">False</span>
</span></span></code></pre></div><h3 id="メンバー演算子">
<a class="header-anchor" href="#%e3%83%a1%e3%83%b3%e3%83%90%e3%83%bc%e6%bc%94%e7%ae%97%e5%ad%90"></a>
メンバー演算子
</h3><ul>
<li>$in$：x in Y（xはオブジェクトまたは変数名、Yは文字列、辞書またはタプル）、指定シーケンスでxが見つかればTrue、それ以外はFalse</li>
<li>$not\ in$：x not in Y、見つからなければTrue</li>
</ul>
<h3 id="同一性演算子">
<a class="header-anchor" href="#%e5%90%8c%e4%b8%80%e6%80%a7%e6%bc%94%e7%ae%97%e5%ad%90"></a>
同一性演算子
</h3><ul>
<li>$is$：二つの識別子が同じオブジェクトを参照しているか判断、つまり本質的に同一か
<ul>
<li>x is y、if id(x)== id(y),return True</li>
</ul>
</li>
<li>$is\ not$：if id(x) != id(y),return True</li>
</ul>
<h3 id="演算子の優先順位">
<a class="header-anchor" href="#%e6%bc%94%e7%ae%97%e5%ad%90%e3%81%ae%e5%84%aa%e5%85%88%e9%a0%86%e4%bd%8d"></a>
⭐演算子の優先順位
</h3><ol>
<li>()：小括弧</li>
<li>$[\ ]$：インデックス演算子</li>
<li>x.attribute：属性アクセス</li>
<li>$**$：べき乗演算</li>
<li>~：ビットNOT</li>
<li>+@、-@：==単項==プラスマイナス（正負符号）
<ul>
<li>+@、-@は==右結合性==単項演算子</li>
</ul>
</li>
<li>$*$、/、%、$//$：乗除、剰余、剰余除算</li>
<li>+、-：二項加減</li>
<li>&laquo;、&raquo;：ビットシフト左右</li>
<li>&amp;：ビットAND</li>
<li>^：ビットXOR</li>
<li>|：ビットOR</li>
<li>$<,<=,>,>=,==,!=$：比較演算子</li>
<li>=，+=，-=……：代入演算子</li>
<li>is，is not：同一性演算子</li>
<li>in，not in：メンバー演算子</li>
<li>not：否定</li>
<li>and：論理積</li>
<li>or：論理和</li>
<li>$,$：カンマ演算子</li>
</ol>

        
        <hr><p>この記事は2023-06-27に<a href='https://www.guzhengsvt.cn/'>孤筝の温暖小家</a>で公開され、最終更新日は2023-06-27です</p><p>本ブログのすべての文書は、特に指定されていない限り、BY-NC-SAライセンスに従っています。引用の際は出典を明記してください！</p>]]></description><category>Code</category></item></channel></rss>