<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Array</title>
	<atom:link href="https://techgrowup.net/tag/array/feed/" rel="self" type="application/rss+xml" />
	<link>https://techgrowup.net</link>
	<description>エンジニアを強くする</description>
	<lastBuildDate>Fri, 22 Nov 2024 21:28:43 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://techgrowup.net/wp-content/uploads/2021/05/hp-icon-150x150.png</url>
	<title>Array</title>
	<link>https://techgrowup.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Python開発入門19 ArrayとLinked Listの違い</title>
		<link>https://techgrowup.net/python-array-linked-list/</link>
					<comments>https://techgrowup.net/python-array-linked-list/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[techgrowup]]></dc:creator>
		<pubDate>Fri, 22 Nov 2024 21:28:39 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[Arrays]]></category>
		<category><![CDATA[Linked-List]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://techgrowup.net/?p=2125</guid>

					<description><![CDATA[はじめに プログラミングで効率的なデータ処理を行うためには、適切なデータ構造を選ぶことが重要です。ArrayとLinked Listは、データを格納するための基本的なデータ構造ですが、それぞれ異なる特徴と用途があります。 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"><strong>はじめに</strong></h1>



<p class="wp-block-paragraph">プログラミングで効率的なデータ処理を行うためには、適切なデータ構造を選ぶことが重要です。ArrayとLinked Listは、データを格納するための基本的なデータ構造ですが、それぞれ異なる特徴と用途があります。</p>



<p class="wp-block-paragraph">この記事では、PythonでArrayとLinked Listの基本から応用までを解説します。特に、以下の点に焦点を当てています：</p>



<ul class="wp-block-list">
<li>ArrayとLinked Listの基礎知識</li>



<li>それぞれの利点と欠点</li>



<li>Pythonでの実装方法</li>



<li>適切なデータ構造の選び方</li>
</ul>



<p class="wp-block-paragraph">初心者でも理解しやすい具体例を交えていますので、ぜひ参考にしてください！</p>



<h2 class="wp-block-heading"><strong>Arrayの基礎</strong></h2>



<h3 class="wp-block-heading"><strong>Arrayとは？</strong></h3>



<p class="wp-block-paragraph">Arrayは、<strong>同じ型のデータを連続したメモリ領域に格納するデータ構造</strong>です。Pythonでは、リスト（<code>list</code>）が動的配列として使用されるほか、<code>array</code>モジュールや<code>numpy</code>ライブラリを使用してよりメモリ効率の高い配列を操作することも可能です。</p>



<h3 class="wp-block-heading"><strong>Arrayの特徴</strong></h3>



<ol class="wp-block-list">
<li><strong>固定長または可変長</strong>
<ul class="wp-block-list">
<li>Pythonのリストは可変長ですが、<code>array</code>モジュールや<code>numpy</code>配列では通常固定長が使用されます。</li>
</ul>
</li>



<li><strong>インデックスによる高速アクセス</strong>
<ul class="wp-block-list">
<li>Array内の要素は、インデックスを指定してO(1)でアクセス可能です。</li>
</ul>
</li>



<li><strong>連続したメモリ配置</strong>
<ul class="wp-block-list">
<li>Arrayはメモリ上で連続して格納されるため、キャッシュ効率が高いです。</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading"><strong>PythonでのArrayの実装</strong></h3>



<h4 class="wp-block-heading"><strong>1. リストを使った配列</strong></h4>



<p class="wp-block-paragraph">Pythonのリストは最も一般的な動的配列です。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="numbers = [10, 20, 30, 40]
print(numbers[2])  # 出力: 30" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">numbers = [</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">40</span><span style="color: #D4D4D4">]</span></span>
<span class="line"><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(numbers[</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">])  </span><span style="color: #6A9955"># 出力: 30</span></span></code></pre></div>



<h4 class="wp-block-heading"><strong>2. <code>array</code>モジュールを使用した配列</strong></h4>



<p class="wp-block-paragraph">型が固定され、メモリ効率が向上します</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="import array

numbers = array.array('i', [10, 20, 30, 40])  # 'i'は整数型
print(numbers[2])  # 出力: 30" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #C586C0">import</span><span style="color: #D4D4D4"> array</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">numbers = array.array(</span><span style="color: #CE9178">&#39;i&#39;</span><span style="color: #D4D4D4">, [</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">40</span><span style="color: #D4D4D4">])  </span><span style="color: #6A9955"># &#39;i&#39;は整数型</span></span>
<span class="line"><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(numbers[</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">])  </span><span style="color: #6A9955"># 出力: 30</span></span></code></pre></div>



<h4 class="wp-block-heading"><strong>3. <code>numpy</code>を使用した配列</strong></h4>



<p class="wp-block-paragraph">科学計算や大規模データ処理に最適です。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="import numpy as np

numbers = np.array([10, 20, 30, 40])
print(numbers[2])  # 出力: 30" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #C586C0">import</span><span style="color: #D4D4D4"> numpy </span><span style="color: #C586C0">as</span><span style="color: #D4D4D4"> np</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">numbers = np.array([</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">40</span><span style="color: #D4D4D4">])</span></span>
<span class="line"><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(numbers[</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">])  </span><span style="color: #6A9955"># 出力: 30</span></span></code></pre></div>



<h2 class="wp-block-heading"><strong>Linked Listの基礎</strong></h2>



<h3 class="wp-block-heading"><strong>Linked Listとは？</strong></h3>



<p class="wp-block-paragraph">Linked Listは、<strong>データ要素（ノード）と、次のノードへのポインタで構成されるデータ構造</strong>です。各ノードは分散してメモリに格納されており、柔軟なサイズ変更が可能です。</p>



<h3 class="wp-block-heading"><strong>Linked Listの種類</strong></h3>



<ol class="wp-block-list">
<li><strong>Singly Linked List</strong><br>各ノードが次のノードへのポインタを持つ構造です。</li>



<li><strong>Doubly Linked List</strong><br>各ノードが次と前のノードへのポインタを持つ構造です。</li>



<li><strong>Circular Linked List</strong><br>最後のノードが最初のノードを指すように構成されるリンクリストです。</li>
</ol>



<h3 class="wp-block-heading"><strong>Linked Listの特徴</strong></h3>



<ol class="wp-block-list">
<li><strong>動的なサイズ変更</strong><br>ノードを追加または削除することで、Linked Listのサイズを柔軟に変更できます。</li>



<li><strong>分散したメモリ配置</strong><br>ノードが連続して格納される必要がないため、大規模データの操作に適しています。</li>



<li><strong>ランダムアクセスが非効率</strong><br>要素を探すにはリストを順番にたどる必要があるため、O(n)の時間がかかります。</li>
</ol>



<h3 class="wp-block-heading"><strong>PythonでのLinked Listの実装</strong></h3>



<h4 class="wp-block-heading"><strong>Singly Linked Listの例</strong></h4>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="class Node:
    def __init__(self, value):
        self.value = value
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def append(self, value):
        new_node = Node(value)
        if not self.head:
            self.head = new_node
            return
        current = self.head
        while current.next:
            current = current.next
        current.next = new_node

    def display(self):
        current = self.head
        while current:
            print(current.value, end=&quot; -&gt; &quot;)
            current = current.next
        print(&quot;None&quot;)

# 使用例
ll = LinkedList()
ll.append(10)
ll.append(20)
ll.append(30)
ll.display()  # 出力: 10 -&gt; 20 -&gt; 30 -&gt; None" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Node</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">__init__</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">self</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.value = value</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.next = </span><span style="color: #569CD6">None</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">LinkedList</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">__init__</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">self</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head = </span><span style="color: #569CD6">None</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">append</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">self</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">        new_node = Node(value)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head:</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head = new_node</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #C586C0">return</span></span>
<span class="line"><span style="color: #D4D4D4">        current = </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">while</span><span style="color: #D4D4D4"> current.next:</span></span>
<span class="line"><span style="color: #D4D4D4">            current = current.next</span></span>
<span class="line"><span style="color: #D4D4D4">        current.next = new_node</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">display</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">self</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">        current = </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">while</span><span style="color: #D4D4D4"> current:</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(current.value, </span><span style="color: #9CDCFE">end</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot; -&gt; &quot;</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">            current = current.next</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;None&quot;</span><span style="color: #D4D4D4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955"># 使用例</span></span>
<span class="line"><span style="color: #D4D4D4">ll = LinkedList()</span></span>
<span class="line"><span style="color: #D4D4D4">ll.append(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">ll.append(</span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">ll.append(</span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">ll.display()  </span><span style="color: #6A9955"># 出力: 10 -&gt; 20 -&gt; 30 -&gt; None</span></span></code></pre></div>



<h4 class="wp-block-heading"><strong>Doubly Linked Listの例</strong></h4>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="class Node:
    def __init__(self, value):
        self.value = value
        self.next = None
        self.prev = None

class DoublyLinkedList:
    def __init__(self):
        self.head = None

    def append(self, value):
        new_node = Node(value)
        if not self.head:
            self.head = new_node
            return
        current = self.head
        while current.next:
            current = current.next
        current.next = new_node
        new_node.prev = current

    def display(self):
        current = self.head
        while current:
            print(current.value, end=&quot; &lt;-&gt; &quot;)
            current = current.next
        print(&quot;None&quot;)

# 使用例
dll = DoublyLinkedList()
dll.append(10)
dll.append(20)
dll.append(30)
dll.display()  # 出力: 10 &lt;-&gt; 20 &lt;-&gt; 30 &lt;-&gt; None" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">Node</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">__init__</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">self</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.value = value</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.next = </span><span style="color: #569CD6">None</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.prev = </span><span style="color: #569CD6">None</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">class</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">DoublyLinkedList</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">__init__</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">self</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head = </span><span style="color: #569CD6">None</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">append</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">self</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">value</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">        new_node = Node(value)</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">not</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head:</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head = new_node</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #C586C0">return</span></span>
<span class="line"><span style="color: #D4D4D4">        current = </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">while</span><span style="color: #D4D4D4"> current.next:</span></span>
<span class="line"><span style="color: #D4D4D4">            current = current.next</span></span>
<span class="line"><span style="color: #D4D4D4">        current.next = new_node</span></span>
<span class="line"><span style="color: #D4D4D4">        new_node.prev = current</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">def</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">display</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">self</span><span style="color: #D4D4D4">):</span></span>
<span class="line"><span style="color: #D4D4D4">        current = </span><span style="color: #569CD6">self</span><span style="color: #D4D4D4">.head</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">while</span><span style="color: #D4D4D4"> current:</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(current.value, </span><span style="color: #9CDCFE">end</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot; &lt;-&gt; &quot;</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">            current = current.next</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot;None&quot;</span><span style="color: #D4D4D4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955"># 使用例</span></span>
<span class="line"><span style="color: #D4D4D4">dll = DoublyLinkedList()</span></span>
<span class="line"><span style="color: #D4D4D4">dll.append(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">dll.append(</span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">dll.append(</span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">dll.display()  </span><span style="color: #6A9955"># 出力: 10 &lt;-&gt; 20 &lt;-&gt; 30 &lt;-&gt; None</span></span></code></pre></div>



<h2 class="wp-block-heading"><strong>ArrayとLinked Listの比較</strong></h2>



<h3 class="wp-block-heading"><strong>特徴の違い</strong></h3>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th><strong>特徴</strong></th><th><strong>Array</strong></th><th><strong>Linked List</strong></th></tr></thead><tbody><tr><td><strong>メモリ配置</strong></td><td>連続したメモリ配置</td><td>分散したメモリ配置</td></tr><tr><td><strong>アクセス速度</strong></td><td>O(1)（インデックスによるアクセスが可能）</td><td>O(n)（順にたどる必要がある）</td></tr><tr><td><strong>挿入と削除</strong></td><td>O(n)（要素をシフトする必要がある場合）</td><td>O(1)（ポインタ操作のみ）</td></tr><tr><td><strong>サイズの柔軟性</strong></td><td>固定または可変</td><td>非常に柔軟</td></tr></tbody></table></div></figure>



<h2 class="wp-block-heading"><strong>用途別の選び方</strong></h2>



<h3 class="wp-block-heading"><strong>Arrayを選ぶべき場面</strong></h3>



<ul class="wp-block-list">
<li>要素へのランダムアクセスが頻繁に必要な場合。</li>



<li>メモリ効率が重要な場合。</li>



<li>データが固定サイズの場合。</li>
</ul>



<h3 class="wp-block-heading"><strong>Linked Listを選ぶべき場面</strong></h3>



<ul class="wp-block-list">
<li>要素の挿入と削除が頻繁に発生する場合。</li>



<li>データ量が動的に増減する可能性がある場合。</li>



<li>順次アクセスが多い場合。</li>
</ul>



<h2 class="wp-block-heading"><strong>まとめ</strong></h2>



<p class="wp-block-paragraph">ArrayとLinked Listは、それぞれ異なる特性を持つデータ構造です。配列は高速なアクセスとメモリ効率を提供する一方で、リンクリストは柔軟性と効率的な挿入・削除を可能にします。</p>



<p class="wp-block-paragraph">プログラムの要件に応じて適切なデータ構造を選択することで、効率的なコードを書くことができます。Pythonでは、配列にリストや<code>numpy</code>、リンクリストにカスタム実装が用意されているため、目的に応じて適切に使い分けましょう。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://techgrowup.net/python-array-linked-list/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
