Finderに不可視フォルダ・ファイルを表示した

はじめに

spyderでpythonファイルを作成したらどっかにいった。
spyderの編集→形式を指定して保存、を押してみたらデフォルトの保存先が
「/users/○○○/」の下の「.spyder-py3」という不可視フォルダになっていた。

ターミナルにおいて

$ cd spyder-py3
$ ls -a

とすれば確認できるが、めんどくさいのでFinderでも不可視フォルダ等を見られるようにした。

環境

macOS High Sierra ver10.13.4

ターミナルで操作

ぐぐったらすぐに出てきた。以下を実行。

$ defaults write com.apple.finder AppleShowAllFiles TRUE

で、一度Finderを終了

$ killall Finder #Fは大文字

完了

感想

python環境を整えたに新規作成した.bashrcや.bash_profileのコードの意味を再確認しておきたいと思っていたので、Finderで見られるようになって楽ちん。
大切なファイルを消さないよう注意したい。

pythonの環境構築とやらをしてみた

macbookproでpythonの環境構築をした


環境構築とそれに必要な知識について調べ、実行した
↓めちゃくちゃ参考にさせていただいた記事。
同じ手順でインストール等行い、私に足りない知識を自分の言葉で埋めてみた。
karaage.hatenadiary.jp

環境

MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
macOS High Sierra version 10.13.4

.bash_profileと.bashrcの設定

何のためにやるのか?
シェルを起動すれば自動的にpyenvとpyenv-virtualenv(後述)が使えるようにする

.bash_profile

ログイン時(ターミナル.app起動時)に実行される。
環境変数を設定することが多い、自分好みの環境にカスタマイズ可能

環境変数

OSのもつ様々な変数(ユーザ名、path、カレントディレクトリなど)


今回はbash_profileに.bashrcを読み込むように設定

#.bash_profileを新規作成  
$ touch ~/.bash_profile
#bash_profileを編集
$ vi ~/.bash_profile
#.bashrcを読み込むよう書き換え 
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi


.bashrc

シェルにbashと叩くことで読み込まれる設定ファイル。
.bash_profileに.bashrcを読み込むプログラムを加えることで、 シェルを起動するだけで.bashrcを読み込むことができる

bash

シェルの一種

シェル

人間が出した命令をOSの中核を担うカーネルに届けてくれる中継役
.bashrcにはエイリアスやpathやプログラムを設定できる。

エイリアス

別名の意味、コマンドを省略することができる。
例えば、ファイルの詳細情報を表示する下記コマンドがある。

ls -l

エイリアスを設定することで、

ll

に省略できる。
qiita.com
linuxfan.info
gabekore.org

今回は.bashrcを新規作成するだけ。後ほどpyenv等を使えるように中身を書き換える

#.bashrcを新規作成 
$ touch ~/.bashrc

homebrewをインストール

何のためにやるのか
pyenvとpyenv-virtualenvをインストールするため

homebrewとは

MacOSのパッケージ管理システム
ターミナルでソフトウェアの管理が容易に行える
brew.sh

公式サイトにもあるが、シェルで以下を実行してhomebrewをインストール

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

pyenvをインストール

何のためにやるのか
pythonをバージョンごとに管理するため
pyenv-virtualenvを使うため

pyenv

pythonをバージョン毎に切り替えて使用できる
同じバージョンで異なる環境を構築することは不可
※pyenv-virtuelenvを使うことで、同じバージョンでも異なる環境構築が可能になる。

# pyenvをインストール
$ brew install pyenv

anaconda3のインストール


pythonを便利に使うために

anaconda

Continuum Analytics社が提供している。
データサイエンティストに用いるライブラリを一括でインストール可能なpythonパッケージ
評判は色々あるが、何かと便利らしいので入れることにした。

#インストール可能なパッケージリストの表示する
$ pyenv install -l

python3系のanacondaをインストール

#anaconda3をインストール
$ pyenv install anaconda3-5.1.0

現在の環境一覧

$ pyenv versions

今の私の環境では以下の通り表示される
(ml,testは試しに作ってみた仮想環境)

  system
* anaconda3-5.1.0 (set by /Users/○○○/.pyenv/version)
  anaconda3-5.1.0/envs/ml
  anaconda3-5.1.0/envs/test

pyenv-virtualenvをインストール

何のためにやるのか
同じバージョンで違う環境を構築するため

pyenv-virtualenv

pyenvのプラグイン
pyenvのみでは同じバージョンで異なる環境の構築はできないがそれを可能にする。

# pyenv-virtualenvをインストール
$ brew install pyenv-virtualenv
# .bashrcに以下を追加
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ echo export PYENV_VIRTUALENV_DISABLE_PROMPT=1 >> ~/.bashrc
$ source ~/.bashrc


condaで仮想環境を構築する

何のためにやるのか
仮想環境を構築するため
元々の環境を汚さずにpythonで遊べるようにするため
pyenv-virtualenvのコマンドで仮想環境を構築するとうまくいかないらしい
condaで構築すればpyenv-virtualenvともうまく連携するとのこと

conda

anacondaやminicodaをインストールすることでついてくるpythonのパッケージ管理システム

# python仮想環境を構築
$ conda create -n test python #ライブラリが入っていないpython環境が構築
$ conda create -n test1 anaconda #anacondaが入ったpython環境が構築 
# 今回はtestのみ作成
# 以下のようにおケツにパッケージを入れることで構築時に同時にインストールしてくれる
$ conda create -n test2 anaconda tweepy PIL
$ pyenv versions
↓
  system
* anaconda3-5.1.0 (set by /Users/○○○/.pyenv/version)
  anaconda3-5.1.0/envs/ml
  anaconda3-5.1.0/envs/test

以下を実行することで作成した仮想環境に移ることができる

$ pyenv global anaconda3-5.1.0/envs/ml

うまく仮想環境が構築できているか確認する方法
先ほど作成したtest2に移動してpythonの対話型シェルを起動し、
import tweepyが成功すればOK。
更に念押しで、元々の環境(anaconda3-5.1.0 (set by /Users/○○○/.pyenv/version))に戻ってきてpythonでimport tweepyをしてErrorが発生すればOK。元々の環境は汚されていないことが分かる。

# パッケージを追加
$ conda install ○○○ #パッケージのインストール
$ pip install ○○○ #condaにないパッケージはpipで


これで

$ pyenv global 作成した仮想環境

で環境を行き来することが可能になった。
とりあえずここまで

Apple製品の匂い缶があったら、リピ確定ですね。

この度macbookpro13㌅を購入しました。

<動機>

やりたいことはたくさんあるのですがPCを用いたものが多く
デスクトップPCのみ所有していたため、家に引きこもって画面を眺め続けること2ヶ月...
休みの日に太陽の光を浴びる時間が著しく減少し、うつ病(自称)に。
自分は思ってたよりもアウトドア派だったようです。
やりたいけど体が動かないため毎日後悔の念に駆られる日々...
そんな日々から脱却したいと思い...


外出先でMacをドヤるためmacbookpro13㌅を購入しました


2018年5月7日19時に届き、早速開封してちょこっと環境設定をいじったり、
インストールしたものがちらほらあるので自分用にまとめ

<環境設定>

時刻の表示

f:id:Atc:20180507223810p:plain
f:id:Atc:20180507224721p:plain
画像編集がむずい

ドッグの表示

f:id:Atc:20180507224805p:plain
画像のサイズ感がわからない

ファイアウォールを設定

f:id:Atc:20180507224954p:plain
ファイアウォールって最初から有効になってると思っていた

トラックパッド タップでクリック有効

f:id:Atc:20180507225157p:plain

拡張子を表示

f:id:Atc:20180507225348p:plain
画像のサイズ感がry

文字入力

f:id:Atc:20180507225424p:plain
今回イキってUSキーを購入しました。ホームポジションでエンターキーが押しやすいのとカッコイイってのが理由なので文字入力設定でつまづいたら嫌だな_と思ってたんですが、特に複雑な設定はする必要がなかったみたいで安心。
(USキーで波ダッシュどうやって打つねん___!!!)
Google日本語入力のひらがなと、純正のUSだけにすることで、入力モード切替時にどちらのモードか判断しやすくなりました。

あと、caps lockにはcontrolを割り当てました。

<インストールしたもの>

Firefox

愛用のブラウザ
「各種サービスにログインするのめんどくさいな〜」
「ブックマークイチからか〜〜」
と思いながらfirefoxにログインしたら全て同期されて余裕でした。
アドオンも自動的にインストールされてビビりました。最高すぎて逆にコワイ。
あと波ダッシュは左上にありました

Google日本語入力

必須です

Line

必須です

Magnet

Windowsのようにディスプレイの端っこにウィンドウをドラッグしたり、ショートカットキーを入力することでウィンドウを整理することができる。ありがたい。

Anaconda

Pythonパッケージ


そんなかんじ
USキーはブログを書いていたら慣れ始めた。
小指で楽にエンターキーを押せるのが最高に良いです。

〜〜〜いい匂いApple製品ランキング〜〜〜〜!!

1位 iMac

実家の5畳自室にダイナミックな機械臭さが香った記憶。電源を付ける前にめちゃくちゃ匂いかぎました。目覚めかけていた己のフェティシズムが開花。

2位 新しいiPad(第3世代)

初めてのアップル製品。癖のきっかけです。

3位 第2世代Magic Trackpad

超久々に単体で購入したアップル製品。開封した時の香りに感動したあまり1Lの空ペットボトルに匂いを閉じ込めようと四苦八苦しました。今でもライトニング接合部から機械臭さが香るので、たまに嗅いでリラックスしてます。アロマ

ランク外 iPhone5s

既に開封済み(ドコモショップにて)

ちなみに今回購入したMacBook Proは、
「USB-C端子接続部分」「F5キー」が良いです。匂いが。




以上です

学習履歴の整理_1(2018年3月22日)

<学習履歴>
Python
Progate : 学習コースⅠ~Ⅴまでを修了
Aidemy : 最初〜2-2-1_辞書型まで修了
独学プログラマー (著:コーリー・アルソフ)(監訳:清水川貴之) : 第4章p69チャレンジ前まで読破&実行

HTML&CSS
Progate : 学習コース初級編〜上級編までを修了
ドットインストール:忘れた

Ruby
Progate : 学習コースⅠ~Ⅱまでを修了

swift
codebell:全課程修了

<やりたいこと>
 ・Progateを全部クリアする
   理由:自分がプログラミングで何をしたいのか
      将来自宅で仕事をできるようになるためにはなんの言語が適しているのか
             〃            どんな知識が必要なのか
      を探るため。
 ・Pythonist3aを購入したのでios内で開発してみたい。
 ・画面が小さいのでipadでやりたい
(新しいiPadと呼ばれた第3世代RetinaiPadは文鎮と化しているためNo) 

<金に余裕があればやりたい>
 ・WEBレッスン系
  テックアカデミー:公式ブログ | TechAcademy [テックアカデミー]
  Udemy:Online Courses - Anytime, Anywhere | Udemy
  PyQ:コース一覧 - PyQ

<感想>
pythonに夢中になっているがこのままでいいのか。
到達地点としては、家で仕事ができるようになること。
pythonは楽しいがもっとふさわしいものがあるのか。
それとも自分の楽しい言語をこのまま続けるべきか。
22歳なので時間はまだあるが、なるべく早く今の職をやめたい
又、結婚や子供ができることによって転職のハードルは高くなると思う。
時間をなるべく多く勉強に割きたい。
あ、ラップトップほしいmacbookairほC

appleさん低価格なのをください!
www.gizmodo.jp

<メモ>
一番最初に書いたブログがすごくはずかしかったのでちょっとなおした///

06_Pythonノート記録_#if #for

05の続き

<if文>

#01 変数aの数字を判定
a = 150
if a > 100:
	print("100より大きい")
elif a  == 100:
	print("100ちょうど")
elif a < 100:
	print("100より小さい")
↓結果
100より大きい

《観察》
elif a < 100: は else でも同じか

#andを使ってif

#02 2つの条件を満たしていれば"あたり"が表示される
a = 50
b = 20
if a < 100 and 15 < b:
	print("あたり")
else:
	prnt("はずれ")
↓結果
あたり

#orを使ってif

#03 片方の条件に当たっていれば"あたり"
a = 50
if a > 40 or a = 20:
	print("あたり")
else:
	print("残念")
↓結果
あたり

#notを使ってif

#04_bより大きくなければイケる
a = 49
b = 50
if not a > b:
	print("イケる")
else:
	print("イケない")
↓結果
イケる

<for>

#01_リストの要素で繰り返す

flute = ["リンゴ","バナナ","イチジク","オレンジ"]
for fl in flute:
	print(fl)
↓結果
リンゴ
バナナ
イチジク
オレンジ

《観察》
繰り返す順番はシーケンス中に要素が現れる順番である

#02_回数を指定して繰り返す

for kuri in range(5):
	print(kuri)
↓結果
0
1
2
3
4


#03範囲を指定して繰り返す

for hani in range(50, 55):
	print(hani)
↓結果
50
51
52
53
54
55

#04範囲と間隔を指定して繰り返す

for kan in range(2, 10, 3):
	print(kan)
↓結果
2
5
8

《ハック》広田まできたら表示をやめる

human = ["佐藤","中島","南方","広田","今田","今泉"]
for nin in human:
	print(nin)
	if nin == "広田": break
↓結果
佐藤
中島
南方
広田


#文字列の隣に文字列を表示

flute = ["apple", "banana", "orange", "kiwi"]
for f in flute:
	print(f + "の文字数は" + str(len(f)) + "です")
↓
appleの文字数は5です
bananaの文字数は6です
orangeの文字数は6です
kiwiの文字数は4です

《観察》
len()では数値を出してくれるので、print時はstrに変換する必要あり。
変換しないとエラー
>>>Can't convert 'int' object to str implicitly
>>>intを暗黙的にstrには変換できない。手動でやりなさい的なニュアンス?
|

#スライスを使ったらどうなるの
#インデックス指定なし

flute = ["apple", "banana", "orange", "kiwi"]
for f in flute[:]:
	print(f)
↓
apple
banana
orange
kiwi

#インデックス指定あり

for f in flute[1:]:
	print(f)
↓
banana
orange
kiwi

《観察》
指定したインデックス番号の要素からはじまる

#range()関数

for AA in range(4):
	print(AA)
↓
0
1
2
3

#rangeの値を指定して遊んでみる
#範囲を指定

for AA in range(20, 22):
	print(AA)
↓
20
21

#範囲と間隔を指定

for AA in range(1 , 100, 39):
	print(AA)
↓
1
40
79

《観察》
for文行おしりに:(コロン)を付け忘れることが多々あるので注意

#インデックス番号の隣に対応する要素を表示させる
#出席番号を摸する

b3 = ["欠番","相沢", "伊藤", "上田", "江口", "小沢"]
for num in range(len(b3)):  #b3のlen=b3の要素数をnumに代入していく
	print(num, b3[num])  #(要素数,リストb3の要素数番目の要素)0 欠番
1 相沢
2 伊藤
3 上田
4 江口
5 小沢

ここで終了↓
4. その他の制御フローツール — Python 3.6.4 ドキュメント

05_Pythonノート記録_#タプル #辞書

04の続き

<用語>

#シーケンス:順番に並んでいること
#シーケンス型:配列やリストのように順番に処理するデータ構造、pythonでいう「文字列、リスト、タプル、range」を言う

<タプル>

#書式

変数 = 値, 値, 値, 値,... 値
#数値型を文字列型が混合していてもOK#

#例

c = 10, 20, "APPLE", "car"
print(c) 
↓
(10, 20, 'APPLE', 'car')
#タプルとリストの違い
タプル:丸括弧がつく、不変型(immutable)、複数の型でも大丈夫、アンパック操作やインデックスでアクセス
リスト:角括弧がつく、変更可(mutable)、同一の型、イテレートでアクセス
イテレート:繰り返し処理
アンバック:まだよくわからない

#タプルを追加

#丸括弧でくくらない
c = c, 1, 2, 3
↓
((10, 20, 'APPLE', 'car'), 1, 2, 3)

#丸括弧でくくる
c = c, (1,2,3)
↓
((10, 20, 'APPLE', 'car'), (1, 2, 3))

#中身を取り出したい

c = ((10, 20, 'APPLE', 'car'), (1, 2, 3))
c[0][1]
↓
20

#本当に中身を変えることはできないのか

c = ((10, 20, 'APPLE', 'car'), (1, 2, 3))
c[0][1] = 600SyntaxError: keyword can't be an expression

《観察》
できない模様。

#0個から成るタプル_変数に()を代入

kara = ()
↓
()

#1個から成るタプル_おしりに,

ikko = "book",
↓
('book',)

#タプルやリストのアンパック_例

coin = 1, 5, 10, 50, 100, 500
a, b, c, d, e, f = coin
print(a,b,c,d,e,f)
↓
1 5 10 50 100 500

《観察》
シーケンス型(タプルやリスト)に代入されている値の数と同じ数の変数を用意し、
左辺に変数 イコール 右辺にシーケンス型の変数
とすることで、複数の変数に同時に値を代入することができる。これをシーケンスのアンパックと呼ぶ。
上記#例の場合、タプルのパック(変数coin)とシーケンスのアンパックをを組み合わせて、a~fに硬貨を割り当てた。

《ハック》
#リストでもやってみる

jap = ["わ", "び", "さ", "び"]
q,w,e,r = jap
print(q,w,e,r)
↓
わ び さ び

#リストやタプルの複合ならどうか

AAA = [[123,456],[789,741,852,963]]
b,c = AAA
print(b,c)  #---1

q,w,e,r = AAA[1]
print(q,w,e,r) #---2
↓
[123, 456] [789, 741, 852, 963] #--1

789 741 852 963 #--2

《観察》
AAAの中身を全て分解して異なる変数に入れようと思ったができなかった。

<辞書型>

#書式

変数 = {キー:値, キー:値, キー:値,...キー:値}

#例

root = {"車":120, "電車":135, "自転車":250, "徒歩":3120}
print(root)
print(root["車"])
↓
{'電車': 135, '車': 120, '自転車': 250, '徒歩': 3120} #順番はランダム
120

《観察》
インデックス番号でアクセス使用とすると...

print(root[0])
↓
TypeError: 'builtin_function_or_method' object is not subscriptable

#辞書を追加

root = {"車":120, "電車":135, "自転車":250, "徒歩":3120}
root["飛行機"] = 60
print(root)
↓
{'自転車': 250, '飛行機': 60, '電車': 135, '徒歩': 3120, '車': 120}

《観察》
追加するときは波括弧じゃなくて丸括弧らしい。なんでやねん

#キーを抽出してリスト化する

#ソースせずに抽出するlist(d.keys())
root = {"車":120, "電車":135, "自転車":250, "徒歩":3120}
print( list(root.keys()) )
↓
['徒歩', '車', '自転車', '電車']

#ソースして抽出
root = {"車":120, "電車":135, "自転車":250, "徒歩":3120}
print( sorted(root.keys()) )
↓
['徒歩', '自転車', '車', '電車'] #あいうえお順かな?

#キーと値のペアであるタプル、を含むリストから辞書を作成する dict.([()])

#タプルを作成
tap1 = ("apple", 100)
tap2 = ("banana", 200)
tap3 = ("orange", 150)

#タプルをリスト化
list1 = []
list1.append(tap1)
list1.append(tap2)
list1.append(tap3)

#リストから辞書を作成
di1 = dict(list1)
print(di1)
↓
{'orange': 150, 'banana': 200, 'apple': 100}

#辞書の内包表記

dic2 = { a : a*b for a in range(1,10) for b in (9,10)}
print(dic2)
↓
{1: 9, 2: 18, 3: 27, 4: 36, 5: 45, 6: 54, 7: 63, 8: 72, 9: 81}


《観察》
九九を1~9の段をキーに:各段の九つ目を値に。
むずい

#ループにおいて、辞書のキーとその値を同時に取り出すことができる。.items()メソッド
#例

pants = {"white":100, "black":200, "yellow":1300}
for x,y in pants.items():
	print(x,y)
↓
black 200
yellow 1300
white 100

#シーケンス型において、インデックス番号と値を同時に取り出すことができるenumerate()関数

pants = {"white":100, "black":200, "yellow":1300}
for x,y in enumerate(pants):
	print(x,y)
0 white
1 yellow
2 black

《観察》
今回は辞書型で試したので、値(whiteなど)の順番は毎回ランダム

#タプルでためしてみる

a = 1,2,3,4,5
for x,y in enumerate(a):
	print(x,y)
↓
0 1
1 2
2 3
3 4
4 5

#シーケンス型をソートしてループする sorted()

a = 20,31,45,1,9,56,3021,4
for b in sorted(a):
	print(b)
↓
1
4
9
20
31
45
56
3021

#辞書だとどうなる?

a = {"G":65, "A":10, "D":98}
for b in sorted(a):
	print(b)
↓
A
D
G #キーがソートされた

《観察》
sorted()は、元のシーケンス型の変数の順序を変えずに、
新たにソート済みのものを返してくれる。

#シーケンス型を逆順にループさせる reversed()関数

for a in reversed(range(1,100,25)):
	print(a)
↓
76
51
26
1

5-7 条件についてもうすこし までやった
https://docs.python.jp/3/tutorial/datastructures.html#tut-loopidioms

04_Pythonノート記録_#数値 #文字列 #リスト

pythonドキュメント ver3.6.4 Pythonチュートリアル」をやってみた時のノート(実験)を載せる

<数値型>

#演算時の型の変換について
#演算される値の方が統一されていない場合、整数の値を浮動小数点に変換される。

a = 2 * 2.5 - 1 

print(a)
↓
4.0

#演算時の注意点
#優先順位_**は-より優先度が高い

-3 ** 2 = -9  #-(3**2)と解釈される。-9としたいなら(-3)**2とする
3 ** -2 = 0.1111111111111  #なんだこれ・・・よくわからん・・・

<文字列型>

#文字列はインデックス標記できる

mozi = "mozi_index"
print(mozi[0])
↓
m

#マイナスで指定すると逆から数える

mozi = "mozi_index"
print(mozi[-5])
↓
i


《観察》
文字列の数を超えたインデックス番号を指定するとエラー
>>> IndexError: string index out of range(範囲外です)
|


#文字列をスライスで取得

mozi = "mozi_index"
print(mozi[0:2])
↓
mo

#片方だけインデックス番号を指定_開始インデックス

mozi = "mozi_index"

print(mozi[2:])
↓
zi_index

#片方だけry_終了インデックス

mozi = "mozi_index"
print(mozi[:2])
↓
mo

《観察》
・開始インデックス:任意に指定しなければ自動で0が指定される
・終了インデックス:自動では指定されない

#スライスで範囲外のインデックス番号を指定

#開始インデックスを範囲外に
a = "mozi_retu_index"
print(a[97874:])	
↓
表示なし

#終了インデックスを範囲外に
print(a[:254654])
↓
mozi_retu_index

《観察》
スライスなら範囲外でもエラーは起きない、つよい

#文字列の長さを知る len()

fish = "寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処藪ら柑子の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助"	
print(len(fish))
↓
103

<リスト>

#基本的な書式

list = [10, 20, 30, 40, 50]
print(list)
↓
[10, 20, 30, 40, 50]

#インデックスで取り出す

print(list[3])
↓
40

#マイナスで指定すると逆から(文字列を同じ)

print(list[-2])
↓
40

#スライスで取得

list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
print(list[1:4])
↓
[20, 30, 40]

#片方だけインデックス番号を指定_開始インデックス

print(list[6:])
↓
[70, 80, 90, 100]

#片方だけry_終了インデックス

print(list[:6])
↓
[10, 20, 30, 40, 50, 60]

《ハック》
インデックス番号であそんでみた

list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
print(list[-5:1])
↓
表示なし

《ハック》
正のインデックスは、一番左の文字列を[0]として右向きに数える
負のインデックスは、一番右側の文字列を[-1]として左向きに数える。-0は0と同じ。

list = ["あ","い","う","え","お"]
print(list[-2:4])
↓
['え']

《ハック》
開始地点-2は"え"と"う”の間。終了地点4は"え"と"お"の間。
う - | え | - お  
挟まれた"え"が選ばれし文字列となった。
なお、list[:]とすると文字列すべて表示される。

#リスト合体

mozi = ["今日は","とても"]
retu = ["よい日に","なりそう"]
print(mozi + retu)
↓
['今日は', 'とても', 'よい日に', 'なりそう']

#リストの要素を編集

mozi = ["今日は","とても"]
retu = ["よい日に","なりそう"]
retu[0] = "悪い日に"
print(retu)
↓
['今日は', 'とても', '悪い日に', 'なりそう']

#リストに要素を追加

sinsu2 = 1,2,4,8,16,32,64,128
sinsu2.append(256)
sinsu2.append(256 * 2)  #演算の結果を追加
sinsu2.append(1024)
↓
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]

《観察》
appendするときは、なぜか[各括弧]でなく(丸括弧)である。
間違えそうなので注意。

《ハック》
同時に複数要素を追加できないか

sinsu2.append(1024, 2048)
print(sinsu2)
↓
error:ypeError: append() takes exactly one argument (2 given)

《観察》
1つの引数だけ、ということだろうか

#リストでスライスを使いたい

sinsu16 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "G", "P", "C", "D", "E", "F"]
sinsu16[-6:-4] = ["A","B"]
print(sinsu16)
↓
['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']

《観察》
マイナスでインデックス番号を指定する方法は、要素が多い時に便利だな

《ハック》
終了インデックスを-5にするとどうなる

sinsu16[-6:-5] = ["A","B"]
['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'P', 'C', 'D', 'E', 'F']

《観察》
開始インデックス→9とGの間から右向きに、終了インデックス→GとPの間から左向きに
よって、挟まれた要素Gが代入の対象となり、AとBに上書きされた。

#スライスでリストの要素を削除する

sinsu16 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "G", "P", "C", "D", "E", "F"]
sinsu16[5:9] = []
print(sinsu16)
↓
['1', '2', '3', '4', '5', 'G', 'P', 'C', 'D', 'E', 'F']

#スライスでリストの要素を全て削除する

sinsu16 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "G", "P", "C", "D", "E", "F"]
sinsu16[:] = []
print(sinsu16)
↓
[]

《観察》
角括弧だけ残るのが、なんか悲しい

#len()で要素を数える

sinsu16 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "G", "P", "C", "D", "E", "F"]
print(len(sinsu16))
↓
15

#リストと他のリストを一緒にする《入れ子というらしい)

sinsu2 = [2,4,6,8]
sinsu16 = ["A","B","C"]
sinsu18 = [sinsu2, sinsu16]
print(sinsu18)
↓
[[2, 4, 6, 8], ['A', 'B', 'C']]

#リストの中のリストの中の要素を取り出したい

print(sinsu18[0][2])
↓
6


#おしりに要素を追加する.append(要素)

a = ["国語", "数学", "理科", "社会", "音楽"]
a.append("図工")
↓
['国語', '数学', '理科', '社会', '音楽', '図工']

《ハック》
#複数追加できるか?

a.append("図工", "英語", "体育")
↓
TypeError: append() takes exactly one argument (3 given)

《観察》
だめでした

#指定した位置に要素を追加する.insert(インデックス番号, 要素)

a.insert(1, "英語")
↓
['国語', '英語', '数学', '理科', '社会', '音楽']

《ハック》
#範囲外のインデックス番号を指定してみる

a.insert(999,"英語")
↓
['国語', '数学', '理科', '社会', '音楽', '英語']

《観察》
イケた。

《ハック》
"英語"だけを出力したい

print(a[999])
↓
indexError: list index out of range

print(a[-1])
↓
英語

《観察》
範囲外のインデックス番号でも追加はできるが、実際は他の要素と連続したところに格納されるらしい
又、(-999,英語)で.insertしたところ、"英語"はインデックス番号0に格納された。


#要素を指定して削除する.remove(要素)

a.remove("国語")
↓
['数学', '理科', '社会', '音楽']

《ハック》
#複数指定して削除したい

a.remove("国語", "数学", "社会")
↓
TypeError: remove() takes exactly one argument (3 given)

《観察》
1じゃなきゃダメみたい

#リスト内全削除をする.clear()
>|python|
a.clear()
↓
[]

《ハック》
#clear()はインデックス番号を指定して特定の要素だけ削除できる?

a.crear(2)
↓
TypeError: clear() takes no arguments (1 given)

<span style="color: #286f2c">《観察》
clear()は引数をとりません、とのこと。
無理なご様子。</span>


#リストに出現するとある要素の出現回数を数える.count()
>|python|
fish = ["マグロ", "サバ", "マグロ", "マグロ", "マグロ", "イカ"]
a.count("マグロ")
↓
4

#リストの要素を逆順にして返す.reverse()

a.reverse()
a
↓
['音楽', '社会', '理科', '数学', '国語']

《観察》
変数の中身そのものが逆順になる


#指定されたインデックス番号の要素を削除して、それを返す.pop(インデックス番号)

a.pop(3)
a
↓
社会
['国語', '数学', '理科', '音楽']


《ハック》
#指定しない.pop()

a.pop()
a
↓
音楽
['国語', '数学', '理科', '社会']

《観察》
指定しなければおしりの要素が対象となる
append()と組み合わせることでスタックとして使える↓↓

スタック = 後入先出(縦の瓶詰めのイメージ)、

《ハック》
#スタックとして使う.append(要素) .pop()

st = [1,2,3]
st.append(4) #おしりに代入
stappend(5) #おしりに代入
st #print
st.pop() #最新の要素を削除して返す , print
st.pop() #最新の要素を削除して返す , print
st #print
↓
[1, 2, 3, 4, 5]
5
4
[1, 2, 3]

《観察》
モジュールを使用してキューとして扱う方法もあったが、
よくわからなかったので後でやる

キュー = 先入先出。
      要素を追加することをエンキューといい
      要素を取り出すことをデューという

#リストの内包表記
リストの[]の中に計算式などを入れちゃうことで、エコにできるらしい

#01_2の段の計算

b = []   #---01
for q in range(1, 10)  #---02
	b.append(q * 2)  #---03
print(b)  #---04
↓
[2, 4, 6, 8, 10, 12, 14, 16, 18]

#02_2の段の計算、内包表記で

b = [q * 2 for q in range(1, 10)]
print(b)
↓
[2, 4, 6, 8, 10, 12, 14, 16, 18]

《観察》

      • 02と---03が逆転

もうちょっとやりたい

《ハック》
#03_13で割り切れる

w = []
for aa in range(0, 200):
	if aa % 13 == 0:
		w.append(aa)
print(w)
↓
[0, 13, 26, 39, 52, 65, 78, 91, 104, 117, 130, 143, 156, 169, 182, 195]

#04_13で割り切れる_内包表記で

w = [aa for aa in range(0,200)  if aa % 13 == 0]
↓
[0, 13, 26, 39, 52, 65, 78, 91, 104, 117, 130, 143, 156, 169, 182, 195]


#リストから要素を削除するdel文

sinsu16 = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "G", "P", "C", "D", "E", "F"]
del sinsu16[-6]
↓
['1', '2', '3', '4', '5', '6', '7', '8', '9', 'P', 'C', 'D', 'E', 'F']
#"G"を削除

del sinsu16[2:5]
↓
['1', '2', '6', '7', '8', '9', 'P', 'C', 'D', 'E', 'F']
#"3"から"5"を削除

del sinsu16[]
↓
[]
#全て削除

《観察》
これまでは、リストに空のスライスをわざわざ代入していた。
(例)sinsu16[2:5] = []
メソッドpop()との違いとしては削除する値を返さない点

del sinsu16

とすると変数そのものが削除され、参照(print等)をするとエラーになる。