PageSourceSearch

https://coreblog.org/ats/thirty_seconds_of_python_code/

html coreblog.org collected 2026-10-02 07:40:48 UTC 14,315 bytes, 241 lines download raw bytes

1
2<!DOCTYPE html>
3<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
4<head>
5            
6
7    <title>30秒で分かるPythonコード集 | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記</title>
8    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
9    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
10
11    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
12
13    <link href='https://fonts.googleapis.com/css?family=Josefin+Slab:400,600' rel='stylesheet' type='text/css'>
14    <link rel="stylesheet" type="text/css" href="/static/style.css" media="screen" />
15
16<link rel='stylesheet' id='wpz-shortcodes-css'  href='/static/functions/wpzoom/assets/css/shortcodes.css?ver=3.6.1' type='text/css' media='all' />
17<link rel='stylesheet' id='wpzoom-theme-css'  href='/static/styles/blue.css' type='text/css' media='all' />
18<link rel='stylesheet' id='wpzoom-custom-css'  href='/static/custom.css' type='text/css' media='all' />
19<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'></script>
vendor: 1 bytes, line 19
19
20<script src='https://codeorigin.jquery.com/jquery-migrate-1.2.1.min.js'></script>
20
21<!--
22<script src='https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.js'></script>
vendor: 1 bytes, line 22
22
23<script type='text/javascript' src='/static/js/jquery/ui/jquery.ui.widget.min.js?ver=1.10.3'></script>
vendor: 1 bytes, line 23
23
24<script type='text/javascript' src='/static/js/jquery/ui/jquery.ui.tabs.min.js?ver=1.10.3'></script>
24
25-->
26<script type='text/javascript' src='/static/functions/wpzoom/assets/js/shortcodes.js'></script>
vendor: 1 bytes, line 26
26
27<script type='text/javascript' src='/static/js/init.js?ver=3.6.1'></script>
27
28<meta name="generator" content="COREBlog 4" />
29<!-- WPZOOM Theme / Framework -->
30<meta name="generator" content="BonPress 2.0" />
31<meta name="generator" content="WPZOOM Framework 1.3.9" />
32
33<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 33-34
33
34<script async src="https://www.googletagmanager.com/gtag/js?id=
34G-TD8NSMN1HW
vendor: 12 bytes, line 34
34"></script>
35<script>
36  
vendor: 134 bytes, lines 36-40
36window.dataLayer = window.dataLayer || [];
37  function gtag(){dataLayer.push(arguments);}
38  gtag('js', new Date());
39
40  gtag('config', '
40G-TD8NSMN1HW
vendor: 4 bytes, line 40
40');
41</script>
41
42<!-- Google Tag Manager -->
43<script>
vendor: 335 bytes, lines 43-47
43(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
44  new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
45  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
46  'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
47  })(window,document,'script','dataLayer','
47GTM-KRQFNKWM
vendor: 3 bytes, line 47
47');
47</script>
47
48  <!-- End Google Tag Manager -->
49</head>
50
51<body class="home blog">
52    <div class="wrapper">
53        <div id="aside">
54            <div class="gig">
55
56                <div id="logo">
57                                        
58                    <h3><a href="https://coreblog.org/ats/" title="TRIVIAL TECHNOLOGIES 4">
59                                                    trivial  technologies
60                                            </a></h3>
61                </div><!-- / #logo -->
62
63                <!--
64                <div id="menu">
65                    <ul id="mainmenu" class="dropdown sf-vertical">
66                      <li id="menu-item-4" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-4"><a href="/ats/">Blog</a></li>
67                      <li id="menu-item-4" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-4"><a href="/ats/">Blog</a></li>
68                    </ul>
69                </div>
70                -->
71
72            </div>
73
74            <div class="clear"></div>
75
76            <div class="collapse-trigger">このサイトについて<span></span></div>
77
78<div id="sidebar">
79
80    <div class="widget wpzoom-widget-social-4" id="wpzoom_aboutme"><h3>About me</h3>
81      <div class="w_content">
82      <div class="cleaner">&nbsp;</div>
83        <div class="about">
84<p>
85<img src="/static/images/me.jpg" />
86<p>みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。</p><br clear="all">
87
88<ul>
89  <li><a href="/ats/stuff/minpy_web/disclaimer.html">免責事項</a></li>
90  <li><a href="/ats/stuff/minpy_web/privacy.html">プライバシーポリシー</a></li>
91</ul>
92
93<!--
94<p style="padding: 0.5em 1.8em; display: block; float: left;"><a title="みんなのPython第四版" href="https://www.amazon.co.jp/dp/479738946X/trivialtechno-22/?ref=nosim" target="_blank"><img src="/static/images/minpy4th.jpg" alt="みんなのPython 第四版" pagespeed_url_hash="1103806989" height="200"></a></p>
95
96<p>拙著<strong><a href="https://www.amazon.co.jp/dp/479738946X/trivialtechno-22/?ref=nosim">みんなのPython 第四版</a></strong>は,より分かりやすい入門書を目指して第三版を大幅に書き換えました。サポートページは<a href="/ats/stuff/minpy_support/">こちら</a>。Webで読める<a href="/ats/stuff/minpy_web/">Webアプリ編</a>もどうぞ。</p>
97-->
98
99
100        </div>
101      </div>
102      <div class="clear">&nbsp;</div>
103    </div>
104
105    </div>
106</div>
107
108<div id="main">
109<p>
110<!--
111
112<span style="padding: 0.5em 1em 0.5em 1em; float:left;"><a title="みんなのIoT" href="https://www.amazon.co.jp/dp/4797393254/trivialtechno-22/?ref=nosim" target="_blank"><img src="/static/images/miniot.jpg" alt="みんなのIoT" pagespeed_url_hash="1103806989" width="50"></a></span>
113<div style="text-align: left;">
114<a title="みんなのIoT" href="https://www.amazon.co.jp/dp/4797393254/trivialtechno-22/?ref=nosim" target="_blank">みんなのIoT</a>はIoT+Pythonの入門書です。プログラミングや電子工作の知識がなくても楽しみながら学べる,一番分かりやすいPythonの入門書です。
115</div>
116
117-->
118<!--
119<a href="https://peatix.com/event/1489030/view" style="font-size: 14pt;">
1205月22日(金),Pythonプログラミングのオンライン勉強会を開催します(無料です)。やさしい言葉でしっかり解説。機械学習(AI)まで地続きの知識を身につける。
121</a>
122-->
123</p>
124
125    <div id="content">
126
127
128
129        <!-- post / -->
130
131<div class="post type-post format-">
132
133            <span class="post_icon"><a href="#" title="30秒で分かるPythonコード集" class="fade" title="30秒で分かるPythonコード集">30秒で分かるPythonコード集</a></span>
134            <h1 class="title">30秒で分かるPythonコード集</h1>
135
136            <div class="entry">
137
138            <div class="page_nav">
139            
140            
141            </div>
142
143             <p><a href="https://github.com/kriadmin/30-seconds-of-python-code">30 secounds of Python code</a>は,その名の通り「30秒で理解できるPythonの<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">
143コード</a>集」。リスト要素のソートやシャッフル,数値列の平均の計算など,親しみやすい課題やアルゴリズムをPythonで書いた<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">コード</a>集。それぞれの<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">コード</a>は短いので,プログラムの挙動を文字通り「30秒」で理解できる。</p>
144<p>たとえば,リスト要素のシャッフル(ランダムな並べ替え)の<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">コード</a>を見てみよう。</p>
145             <pre class="code">
146from copy import deepcopy
147from random import randint
148
149def shuffle(arr):
150    temp_arr = deepcopy(arr)
151    m = len(temp_arr)
152    while (m):
153        m -= 1
154        i = randint(0, m)
155        temp_arr[m], temp_arr[i] = temp_arr[i], temp_arr[m]
156    return temp_arr
157</pre>
158
159<p>「<a href="https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%83%E3%82%B7%E3%83%A3%E3%83%BC%E2%80%93%E3%82%A4%E3%82%A7%E3%83%BC%E3%83%84%E3%81%AE%E3%82%B7%E3%83%A3%E3%83%83%E3%83%95%E3%83%AB">フィッシャー–イェーツのアルゴリズム</a>」を使って,リストの要素をまぜこぜにしている。それほど難しくないので,実際に<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">
159コード</a>を読めば内容を理解できると思うけど,念のためポイントを解説する。</p>
160<p>まず関数の中でdeepcopy()を使ってリストのコピーを取る。「temp_arr = arr」のように引数として受けたリストを単に代入すると,引数のリスト自体の並び順が変わってしまうからだ。whileループの中では,実際に要素の順番を入れ替えている。randint()関数を使ってリストを入れ替える先のインテックスを生成して,その次の行で要素の入れ替えを行っている。temp_arrをインデックスで参照している部分が似たような<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">コード</a>で分かりづらいけど,よく見ると左辺と右辺で角括弧の中にある変数が異なっている(左辺はm,iで,右辺はi,m)。Pythonでは「a, b = b, a」のような代入すると,要素の入れ替えができるのだ。</p>
161<p>Pythonの文法を知っている人でも,自分で思ったようなプログラムを作れない人は意外と多いはずだ。<strong>プログラムの動きをイメージできない</strong>ことがつまづきのポイントになりやすい。短い<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">
161コード</a>を読んで,動きを頭の中で追って理解することで,プログラムの動きが分かるようになるはずだ。そうすれば,少しずつ自分で思ったようなプログラムが作れるようになる。<a href="https://github.com/kriadmin/30-seconds-of-python-code">30 secounds of Python code</a>は,そんな勉強にピッタリの<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">コード</a>集と言える。</p>
162<p><a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">コード</a>にlambdaやreduceなどの高階関数が使われていたり,少しトリッキーな所もある。そういう<a href="http://coreblog.org/ats/stuff/minpy_support/samplecodes04/">コード</a>は自分でループやリスト内包表記に書き換えると,より深く勉強できてよいと思う。</p>
163
164
165
166            <div class="page_nav">
167            
168            
169            </div>
170
171            </div>
172
173<!-- AddThis Smart Layers BEGIN -->
174<!-- Go to http://www.addthis.com/get/smart-layers to customize -->
175<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f29d1013d550014"></script>
vendor: 1 bytes, line 175
175
176<script type="text/javascript">
177  addthis.layers({
178    'theme' : 'transparent',
179    'share' : {
180      'position' : 'right',
181      'numPreferredServices' : 5
182    },   
183    'recommended' : {},
184    'linkFilter' : function(link, layer) {
185        if( 'naming' in link.url ) { return false; } else {return link};
186    },
187  });
188</script>
188
189<!-- AddThis Smart Layers END -->
190
191            <div class="meta clearfix">
192
193                <span class="date">2018-02-26 12:00</span>
194                <ul class="social-button">
195                  <li><a href="http://b.hatena.ne.jp/entry/http://coreblog.org/ats/thirty_seconds_of_python_code/" class="hatena-bookmark-button" data-hatena-bookmark-title="30秒で分かるPythonコード集" data-hatena-bookmark-layout="standard" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a>
195<script type="text/javascript" src="http://cdn-ak.b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>
195</li>
196                  <li><div class="fb-like" data-href="http://coreblog.org/ats/thirty_seconds_of_python_code/" data-send="false" data-layout="button_count" data-width="130" data-show-faces="false"></div></li>
197                  <li><a href="https://twitter.com/share" class="twitter-share-button" data-url="http://coreblog.org/ats/thirty_seconds_of_python_code/" data-text="30秒で分かるPythonコード集" data-lang="jp" data-count="horizontal">Tweet</a>
197<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
197</li>
198                  <li>
198<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
198<div class="g-plusone" data-size="medium" data-href="[記事のURL]"></div></li>
199                </ul>
200
201
202            </div>
203
204        </div><!-- /.post -->
205
206
207
208    </div>
209
210</div>
211
212</div>
213
214<div id="footer">
215
216
217    <div class="copyright">
218
219        <div class="left"><p class="copy"> Copyright &copy; Atsushi Shibata 2013 All Rights Reserved. The design is based on <a href="http://www.wpzoom.com/themes/bonpress/">BonPress</a>.</p></div>
220<p><a href="https://maname.jp/">みんなの名前辞典</a></p>
221
222    </div>
223
224
225</div>
226
227    
227<script>(function($){$(document).ready(function(){});})(jQuery);</script>
227<script type='text/javascript' src='/static/js/dropdown.js?ver=3.6.1'></script>
vendor: 1 bytes, line 227
227
228<script type='text/javascript' src='/static/js/custom.js'></script>
vendor: 1 bytes, line 228
228
229<script type='text/javascript' src='/static/functions/wpzoom/assets/js/galleria.js'></script>
vendor: 1 bytes, line 229
229
230<script type='text/javascript' src='/static/functions/wpzoom/assets/js/wzslider.js'></script>
230
231<!-- Go to www.addthis.com/dashboard to customize your tools --> 
231<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f29d1013d550014"></script>
231 
232<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 232-233
232
233<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
233GTM-KRQFNKWM
vendor: 87 bytes, lines 233-235
233"
234  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
235  
235<!-- End Google Tag Manager (noscript) -->
236</body>
237</html>
238<!-- Dynamic page generated in 0.669 seconds. -->
239<!-- Cached page generated by WP-Super-Cache on 2013-09-30 13:44:47 -->
240
241<!-- Compression = gzip -->

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.