T_NAKAの阿房ブログ

アクセスカウンタ

zoom RSS Python のおさらい(15)リストについて

<<   作成日時 : 2015/10/06 00:01   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

コンピュータサイエンスとプログラミング入門(Part1)の修了証書を貰ってモチベーションが下がってしまって、サボってました。前記事で問題を解いてましたが、今回は授業で提示されている slide06 という資料の後半に書いてあるプログラムを見ていきたいと思います。

まずはリストについて。
画像





















少し解説すると
Techs = ['MIT', 'Cal Tech']
Ivys = ['Harvard', 'Yale', 'Brown']

との前提で、
Univs = []
Univs.append(Techs)

とすると、結果
Univs は [['MIT', 'Cal Tech']]
となります。さらに
Univs.append(Ivys)
とすると、
Univs は [['MIT', 'Cal Tech'], ['Harvard', 'Yale', 'Brown']]
になります。
これで、リストの要素付加あるいは追加 ".append" の働きが分かります。
要素としてリスト形式のものも使えるのですね。

for e in Univs:
   print e
   for c in e: print c

では、まず Univs の要素 ['MIT', 'Cal Tech'] と ['Harvard', 'Yale', 'Brown'] 、各要素リストの要素を入れ子で印字させることになり、結果は
['MIT', 'Cal Tech']
MIT
Cal Tech
['Harvard', 'Yale', 'Brown']  
Harvard
Yale
Brown

となります。" _ in 該当リスト " という形で、要素を取り出すことが分かりました。

Univs = Techs + Ivys
では リストTechs とリストIvys を結合させて新たなリストUnivs を作ります。
Univs は ['MIT', 'Cal Tech', 'Harvard', 'Yale', 'Brown'] となります。
ここで、
Ivys.remove('Harvard')
で、リストIvys の要素'Harvard'を取り除くことができます。
しかし新たなリストUnivs は ['MIT', 'Cal Tech', 'Harvard', 'Yale', 'Brown'] のままです。
次に
Ivys[1] = -1
でリスト Ivys の2番目(0オリジンのため[1]と表わされる)の要素を数値-1に置き換えると、
Ivys は [ 'Yale', -1]
となります。ここは Ivys の要素変更は影響されない例です。

画像






L1 = [1, 2, 3]
L2 = L1

で、L2 は [1, 2, 3] です。
L1[0] = 4
で、L1 は [4, 2, 3] になります。
この場合、L2 も [4, 2, 3] になります。後からL1の要素だけを変えても、L2 = L1 としているため、L2 にも影響を与えます。

def f(L):
   L[0] = 4

という最初の要素を 4 に変える関数と
L1 = [1,2,3]
L2 = [1,2,3]

という前提ですが、この場合 L1 と L2 は内容は全く同じものですが、別々のものです。
L3 = L1
で L3 も [1,2,3] になりますが、L1 に影響されるものになります。L2 は影響されません。
このままで L1 == L2 True です。
しかし f(L1) で L1 は [4,2,3] となり、 L1 == L2False となります。
最終的に
L1 は [4,2,3]
L2 は [1,2,3]    
L3 は [4,2,3]
ということです。

ここで、
L1 = [1,2,3]
という前提で、
L2 = L1[:]
とすると、L1 の要素変更に影響されない L1 のコピーとしての L2 を作ることが出来ます。
L1[0] = 4 で L1 は [4,2,3] となりますが、L2 は [1,2,3] のままです。

今日はこの辺で。。

 

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Python のおさらい(15)リストについて T_NAKAの阿房ブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる