忍者ブログ
物理学者(ポスドク)による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)
■ シーケンス
リスト、タプル、文字列、他にバイト型(これは全然知らない)をシーケンスと呼ぶ
どれも添え字やスライスを使って、同じように要素の操作を行える


■ 添字を使ったアクセス
>>> list=[1,2,3,4,5]
>>> list[2]
3
>>> list=[0,1,2,3,4,5]
>>> list[2]
2
>>> list[-2]
4
>>> list[-1]
5
前にも書いたとおり負のインデックスは、リストの後ろから順番に要素にアクセスできる


■ スライス

hoge[開始位置:終了位置]
という書き方で、リストの一部だけを取り出すことができる
存在しないスライスをしたとしても、エラーは出ずに空リストが返ってくる
>>> list=[0,1,2,3,4,5]
>>> list[0:2]
[0, 1]
>>> list[0:6]
[0, 1, 2, 3, 4, 5]
>>> list[-2:-5]
[]
>>> list[-5:-2]
[1, 2, 3]

hoge[開始位置:終了位置:増分値]
のように増分値を設定することで何個飛ばしでスライスすることもできる
(これは何かに使えるかもしれないので覚えとこ)
>>> list=[0,1,2,3,4,5]
>>> list[0:5:2]
[0, 2, 4]

↑のようなオブジェクトを作成するという方法もある
>>> list=[0,1,2,3,4,5]
>>> slice(0, 5,2)
slice(0, 5, 2)
>>> list[slice(0, 5,2)]
[0, 2, 4]


リストの一部の要素を修正するときは
>>> list=[0,1,2,3,4,5]
>>> list[0]=100
>>> list[5]=500
>>> list
[100, 1, 2, 3, 4, 500]

スライスを使って、複数の要素を一度に修正することもできる
指定するインデックスが2個で、代入する要素が3個と不一致でもなんとかゴリ押してくれるっぽい
>>> list=[0,1,2,3,4,5]
>>> list[2:4]=["A", "B", "C"]
>>> list
[0, 1, 'A', 'B', 'C', 4, 5]
>>> list[2:4]
['A', 'B']


要素の更新には += や *= も使える
>>> list=[0,1,2,3,4,5]
>>> list[2] += 4
>>> list
[0, 1, 6, 3, 4, 5]
>>> list[1] *= 1000
>>> list
[0, 1000, 6, 3, 4, 5]
数字同士に対して、これらの処理をするのはどうなるかわかるけど
文字列にも += や*=が使えるっぽい
そもそもリストに * を使うと、そのリストと同じものを2つ作るという点に注意、たぶんそのうち出てくる



要素の削除はdelを使う
>>> list=[0,1,2,3,4,5]
>>> del list[0], list[4]
>>> list
[1, 2, 3, 4]


■ +と*をリストに使ってみる
+はリスト同士をくっつける
*はリストをその後の数字の分だけ繰り返す
>>> [1,2,3] + [44, 55, 66]
[1, 2, 3, 44, 55, 66]
>>> [100, 111, 222] * 3
[100, 111, 222, 100, 111, 222, 100, 111, 222]
>>> [100, 111, 222] * 3.5
Traceback (most recent call last):
File "", line 1, in
TypeError: can't multiply sequence by non-int of type 'float'
*の後の数字は整数じゃないとエラーが出る



■ 比較演算子
<や>など
シーケンスの要素同士を先頭から比較して、TrueかFalseを返す
>>> [1, 2] < [3, 4]
True
>>> [1, 2] < [1, 4]
True
>>> [1, 2] < [1, 1]
False


■ メンバーシップ演算子
>>> 1 in [1,2,3,4,5]
True
>>> 0 in [1,2,3,4,5]
False
後々出てくる集合でも活躍する



■ シーケンスの長さ
組み込み関数のlen()を使う
>>> len([1,2,3,4,5])
5



■ リストに要素を追加する
リストのメソッドappend()を使う
>>> list=[0, 1, 2, 3, 4, 5]
>>> list.append(100)
>>> list
[0, 1, 2, 3, 4, 5, 100]


■ リスト内包式
Haskellでもあったリスト内包表記
たぶん使わんからパス



■ リストのメソッド簡易表

リストhogeの末尾にvalueを追加する
hoge.append(value)

リストhogeの要素をすべて削除する
hoge.clear()
del L[:]と同じ

python2だとエラーが出る
なんか間違ってる・・?
>>> L=[1,2,3,4]
>>> L.clear()
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'list' object has no attribute 'clear'

めんどくさくなったので、まとめられてるところを貼っとく
■ 参考 : Python リストのメソッド


リストの順序を逆に出来る
逆にしたリストを返すのではなくてリストhogeの中身を逆にしてしまう
hoge.reverse()


ソート
オプションがあるけど、まぁ使うときに調べるっしょ
hoge.sort()





■ タプル
基本的にリストとほとんど同じだけど、一番異なるところはタプルは更新不能なオブジェクト
>>> ta=(1,2,3)
>>> ta[1]
2
>>> ta[1]=4
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
■ 参考 : Python のタプルとリストの違い、タプルの使いどころ


リストはミュータブルであり、タプルはイミュータブルである
= リストは要素を更新できるか、タプルは要素が更新できない
= タプルはオブジェクト id を変えずに要素を追加・変更・削除をすることができない





■ 文字列
複数行の文字列は\で分割できる
複数行の文字列は"""や'''で囲むと記述できる






■ 辞書オブジェクト
{キー:値, キー:値, キー:値}
という書き方をする
空の辞書は{}





■ 集合
{要素, 要素, 要素}
という書き方をする
集合の要素は重複しない、というのが特徴
つまり1という要素があったら、1という要素を追加しても集合は何も変わらない
>>> {1,2,3,4,5}
set([1, 2, 3, 4, 5])
>>> 1 in {1,2,3,4,5}
True
>>> "a" in {1,2,3,4,5}
False
>>> {1,2,3} <= {1,2,3,4}
True
>>> {1,2,3} < {1,2,3,4}
True
inや<などの演算子が使える
inは左の集合が右の集合に含まれたらTrue
<=はinと同じだと思う
<は少し違って、左の集合と右の集合が同じ場合はFalseになる、それ以外は<=と同じ

==は左と右の集合が完全に同じならTrue、それ以外はFalse

空集合を作るときは
set()


■ 集合のメソッド

集合に要素を追加する
hoge.add(elem)




(まぁ書かなくてもええやろ・・・)







■ 他のデータ型からリスト型への変換

■ 参考 : Python3系の基礎文法(リスト、タプル)
>>> ta=(1,2,3, "b", 4)
>>> list(ta)
[1, 2, 3, 'b', 4]

>>> ch1="ABCDEF"
>>> list(ch1)
['A', 'B', 'C', 'D', 'E', 'F']

>>> ch2="2018/04/10"
>>> ch2.split("/")
['2018', '04', '10']










PR
この記事にコメントする
Name
Title
Color
E-Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST

print "先月子供が産まれました!"

# 最終更新 2022/10/25
カウンター
カウンター カウンター
ブログ内検索
ツイートするボタン
リンク
相互リンク募集中です (Twitterにてお知らせください)

Demo scripts for gnuplot version 5
(gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)

gnuplotスクリプトの解説
(米澤進吾さんの個人ページ、gnuplotと言えばこのかた)

gnuplot のページ
(Takeno Lab、うちのブログがリンクされていたのでリンク返し)

Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco
(映画の感想をまとめられるサイト、いつもお世話になっています)

Astronomy Picture of the Day Archive
(天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)

今日のほしぞら
(任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)

GNUPLOTとアニメーション
(応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)

読書メーター
(読んだ本をリストできる便利なサイト)

flickr難民の写真置き場
(20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)

教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定
(阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)

英語論文執筆用の例文検索サービス
(とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)


Template "simple02" by Emile*Emilie
忍者ブログ [PR]