とある変人のお道具箱

興味は広く、知識は浅い変人が管理しております。

Gitのインストールと初期設定(Ubuntu18.04)

Gitのインストール

ターミナルを起動し、以下のコマンドを実行します

sudo apt install git

下のコマンドを実行してバージョンが表示されたら、無事にGitがインストールできています。

git --version

   

Gitの初期設定

自分のユーザー名とメールアドレスの設定
git config --global user.name 自分の名前
git config --global user.email 自分のメールアドレス

   

ターミナルでGitを見るときのカラー表示の設定
git config --global color.ui "auto"

   

いま設定した内容を確認したい場合
git config --global --list

Ubuntuを入れてからすること(随時追加予定)

Ubuntu18.04を入れてからしたことやおすすめの設定を備忘録を兼ねてリストアップします。
   

   

Google Chromeのインストール

henjins-toolbox.hatenablog.com
   

Firefoxのアンインストール

Ubuntuソフトウェアのインストール済み一覧からFirefoxを削除した
   

Arduino IDEのインストール

henjins-toolbox.hatenablog.com
   

Gitの設定

henjins-toolbox.hatenablog.com
   

vimpython補完機能

Google Chromeのインストール方法(Ubuntu18.04)

ターミナルを使ったGoogle Chromeのインストール方法

Ubuntu18.04には標準でFirefoxがブラウザとしてインストールされていますが、Chromeを使いたいという人向けに説明します。
   
1. ターミナルを起動します
   
2. Chromeリポジトリの追加

sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

   
3. 公開鍵の登録

sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

   
4. パッケージリスト更新

sudo apt update

   
5. Google Chromeのインストール

sudo apt-get install google-chrome-stable

   
これでGoogle Chromeはインストールされました。
すべてのアプリケーションに追加されていると思います。
   
ちなみにChromeをターミナルから起動するには下のコマンドを実行します

google-chrome

Arduino IDEのインストール方法(Ubuntu18.04)

ターミナルを使ったArduino IDEのインストール方法

1. 端末をクリックしてターミナルを起動します


2. 次のコマンドを入力し、エンターキーを押します

sudo apt install arduino

   
3. 「〇〇MBの容量を消費しますがよろしいですか」と聞かれるのでyと入力する

y

   
4. しばらく待つとインストールが完了します

python3 リストの特定の要素の出現回数を取得する

今回は次のリストにおいて説明していきます

abcd_list = ["a","b","c","b","a","d","a"]

   

   

各要素の個数を求めたいとき(count()を使用)

例えば”a"の出現回数を求めたいときは「count()」を利用し、次のように記載します。

a_count = abcd_list.count("a")
f_count = abcd_list.count("f")
print(a_count)   #3
print(f_count)   #0

ちなみに引数に count(”f”) のように存在しないものを与えると 0 が返って来るので注意しましょう。
   
   

すべての要素の出現回数を求めたいとき(collections.Counter()を使用)

最も頻繁に現れる要素を調べたいときや出現回数順に並べたいときなどはcollections.Counter()を使うと便利です。

import collections
cc = collections.Counter(abcd_list)
print(cc)
#Counter({'a': 3, 'b': 2, 'c': 1, 'd': 1})

下のようにキーに求めたい要素を指定するとその個数を取得することが可能です。

print(cc["b"])   #2
print(cc["f"])   #0

ちなみにこれも cc["f"]のように存在しないものを与えると 0 が返って来るので注意しましょう。
   
   

出現回数順に要素を取り出したいとき(most_common()を使用)

most_common を使うと(要素,個数)のタプルを返してくれます。

print(cc.most_common())
#[('a', 3), ('b', 2), ('c', 1), ('d', 1)]

   
これを次のように指定してやれば最も頻繁に出てくる要素や個数を取り出すことができます。

#最も頻繁に出てくる要素
print(cc.most_common()[0][0])   #a

#最も頻繁に出てくる要素の個数
print(cc.most_common()[0][1])   #3

#二番目によく出てくる要素
print(cc.most_common()[1][0])   #b

#二番目によく出てくる要素の個数
print(cc.most_common()[1][1])   #2

   
リストと同じようにスライスにマイナスの値を指定すると少ない要素から順に取り出すことも可能です。

#一番少ない要素
print(cc.most_common()[-1][0])   #d

#一番少ない要素の個数
print(cc.most_common()[-1][1])   #1

python3 リストを逆順にするには

list_a = [0,1,2,3,4,5]

上のようなリストを下のように逆順にしたいときの方法を2つ紹介します

[5,4,3,2,1,0]

   

スライスを利用する方法

次のように書くと逆順にすることができます

list_gyaku = list_a[::-1]

   
  

reversedメソッドを利用する方法
list_gyaku = reversed(list_a)

python3競技プログラミング入門(標準入力#2)

前回は、標準入力とは何か、どうやって取得するのかを説明しました。 henjins-toolbox.hatenablog.com

今回は、より複雑な入力の取得方法について説明します。

1行に複数個のデータが与えられたとき

以下の例のように1行に複数個のデータが与えられたらどうすればよいのでしょうか。 

apple orange

この例の場合には2つの文字列がスペースで区切られています。

このようなときには分割する「split関数」を使用します。
split関数は()内に分割する基準を与えると切り分けてリストにしてくれます。

apple orange

と与えられているときには

string_list = input().split(" ")
print(string_list)

と書くと、  

['apple','orange']

これでリストの中に文字列"apple"と"orange"が入っている状態にすることができました。

また、スペースで区切られている場合には()内を省略して

string_list = input().split()

と書くことも可能です。
(というかめんどくさいから普通は書かない)

ちょっと応用してコンマで区切られているときは

string_list = input().split(",")

と書いてやるとコンマで分割したリストになります。

複数行のデータが与えられたとき(行数は最初に指定されるとき)

以下の例のようにデータが与えられるときはどうすればよいのでしょうか。

4
apple
orange
banana
lemon

このようなときには「for文」でループさせてしまいましょう。
今回は4行と指定されているので4回回すことにします。
詳しい説明は別の記事でしようと思いますが、リスト内法表記という書き方をするときれいに書くことができます。

n = int(input())
string_list = [input() for i in range(n)]
print(string_list)

と書くと、

['apple','orange','banana','lemon']

これでリストに4つの果物の名前が入っている状態にすることができました。

複数行のデータが与えられたとき(行数が指定されないとき)

以下の例のようにデータが与えられるときはどうすればよいのでしょうか。

JAPAN
AMERICA
CHINA
KOREA

最初に行数の指定がないためfor文でループができません。 こんなときはtry-exceptで対応してしまいましょう。
これも詳しくは別の記事で説明しようと思いますが、簡単に説明するとエラーが出るまでループしてエラーが出次第終了させるというやり方です。

country_list = []
while True:
    try:
        country_list.append(input())
    except:
       break;
print(country_list)

と書くと、

['JAPAN', 'AMERICA', 'CHINA', 'KOREA']

リストに国名をすべて入れることができました。