LoginSignup
2
4

More than 3 years have passed since last update.

Pyhtonの基礎復習はこれだけ ~2~

Last updated at Posted at 2020-06-16

4.リスト [ ]

リストの使い方

  • リストの値の出力方法。

インデックスは0から数える

spam = ['cat', 'bat', 'rat', 'elephant']
spam = [0]
cat
spam = [1]
bat
spam = [2]
rat
spam = [3]
elephant
  • 負のインデックス
spam = ['cat', 'bat', 'rat', 'elephant']
spam = [-1]
elephant
  • リストの中のリストの値の出力方法。

初めの[ ]でリストを指定し、次の[ ]で値を指定する。

spam = [['cat', 'bat', 'rat', 'elephant'], ['1', '2', '3']]
spam = [0][1]
bat
  • 部分リストの出力方法

スライスを用いることで部分リストを取得できる。
第1引数は開始インデックスを表し、第2引数は終了値の1小さい値を表す。
値を省略すると0になる。

spam = ['cat', 'bat', 'rat', 'elephant']
spam = [0:3]
['cat', 'bat', 'rat']
spam = [:2]
 ['cat', 'bat']
  • インデックスを用いてリストの値を変更する
spam = ['cat', 'bat', 'rat', 'elephant']
spam[4] = 12345
spam
['cat', 'bat', 'rat', 12345]
  • del文を用いてリストから値を削除する。
spam = ['cat', 'bat', 'rat', 'elephant']
del spam[2]
spam
['cat', 'bat', 'elephant']
  • 複数代入法

変数にリストの値を代入する時、以下のプログラムより短く書ける。

spam = ['cat', 'bat', 'rat', 'elephant']
size = spam[0]
color = spam[1]
cat = spam[2]

print(size)
cat
print(color)
bat
print(cat)
rat
# 以下は複数代入法
spam = ['cat', 'bat', 'rat', 'elephant']
size, color, cat = spam
  • forループとリスト

以下のプログラムはcats_nameのリストを順番にnameに代入していく。

for name in cats_name:
    print(name)
# これは以下のプログラムと同じ動き
for i in range(1, 6)
    print(i)
  • リストの例外

リストは字下げルールの例外になり
連結文字の\(バックスラッシュ)を使えば改行、字下げができる。

メソッド

  • index()メソッド

リストの値からインデックスを出力する。

spam = ['cat', 'bat', 'rat', 'elephant']
spam.index('bat')
1
  • append()メソッド (リストのメソッド)

リストに新しい値を追加する。

spam = ['cat', 'bat', 'rat', 'elephant']
spam.append('moose')
spam
['cat', 'bat', 'rat', 'elephant', 'moose']
  • insert()メソッド (リストのメソッド)

append()メソッドと異なり、任意の場所に値を追加する。
第1引数にインデックス、第2引数に値を入力する。

spam = ['cat', 'bat', 'rat', 'elephant']
spam.insert(1, 'chicken')
spam
['cat', 'chicken', 'bat', 'rat', 'elephant']
  • remove()メソッド

リストから値を削除する。
remove()メソッドは削除したい値が分かっているとき。
del文は削除したい値のインデックスが分かっているとき。
複数値があるときは最初の値だけ削除される。

spam = ['cat', 'bat', 'cat', 'rat', 'elephant']
spam.remove('cat')
spam
['bat', 'cat', 'rat', 'elephant']
  • sort()メソッド

リストの値を並び替える。

spam = [2, 5, 3.14, 1, -7]
spam.sort()
spam
[-7, 1, 2, 3.14, 5]

逆順ソートしたい場合はキーワード引数のreverseにTrueを指定する。

spam = [2, 5, 3.14, 1, -7]
spam.sort(reverse=True)
spam
[5, 3.14, 2, 1, -7]

sort()メソッドはアルファベットの大文字、小文字の順にソートするので
アルファベット順にソートしたい場合はキーワード引数keyにstr.lowerを渡す。

spam = ['a', 'z', 'A', 'Z']
spam.sort(key=str.lower)
spam
['a', 'A', 'z', 'Z']

文字列とリスト

文字列をリストとして扱うことができる。

name = 'Zophie'
name[0]
'Z'
name[-2]
'i'
name[:4]
'Zoph'

for i in name:
    print(i)
'Z'
'o'
'p'
'h'
'i'
'e'

ミュータブル、イミュータブル

リストはミュータブル(変更可能)
文字列はイミュータブル(変更不可)

タプル型

リスト[ ]と異なる点が2つある。

  • [ ]ではなく( )を用いる。
  • イミュータブルである。

タプルの要素が1つのときは('Hello',)のようにカンマを付ける。

list()関数、tuple()関数

  • リストをタプルにする。
tuple(['cat', 'dog', 5])
('cat', 'dog', 5)
  • タプルをリストにする。
list('Hello')
['H', 'e', 'l', 'l', 'o']

copyモジュールとcopy(),deepcopy()

リストや辞書を複製する時につかう。

  • copu.copy() リストや辞書の複製
  • copy.deepcopy リストや辞書の中のリストや辞書を複製
import copy
spam = ['A', 'B', 'C', 'D']
cheese = copy.copy(spam)
cheese[1] = 42
spam
['A', 'B', 'C', 'D']
cheese
['A', 42, 'C', 'D']

5.辞書とデータ構造

辞書型

リストのインデックスは整数型であったのに対して
辞書はさまざまなデータ型を用いることができる。
リスト [ ]
タプル ( )
辞書  { }
辞書のインデックスをキーといい、キーと値を合わせてキー・バリュー・ペアという。

  • 値にアクセスする方法
my_cat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}
my_cat['size']
'fat'

辞書とリストの比較

辞書はリストと異なり要素の順序がない。
つまりインデックスを任意の値から始めることができる。
順序がないのでスライスを使うことができない。

リスト風の値を返すメソッド

以下の3つのメソッドは辞書で用いるとリスト風の値を返す。

  • keys()メソッド

辞書のキーを返す。

spam = {'color': 'red', 'age': 42}
for k in spam.keys():
    print(k)
color
age
  • values()メソッド

辞書のを返す。

spam = {'color': 'red', 'age': 42}
for v in spam.values():
    print(v)
red
42
  • items()メソッド

辞書のキー・バリュー・ペアを返す。

spam = {'color': 'red', 'age': 42}
for i in spam.items():
    print(i)
('color', 'red')
('age', 42)
  • items()メソッドの応用

キーと値を別々の変数に代入させることができる

spam = {'color': 'red', 'age': 42}
for k, v in spam.items():
    print('Key: ' + k +'Value: ' + str(v))
Key: color Value: red
Key: age Value: 42

get()メソッド

get()メソッドはアクセスしたいキーが存在しないとき任意の値を返す設定ができる。
つまり辞書にキーが存在しないとき発生するエラーを避けることができる。
アクセスしたいキーと、存在しなかった場合返す値を入力する。

picnic_items = {'apples': 5, 'cups': 2}
print('I am bringing' + str(picnic_items.get('cups', 0)) + ' cups.'
I am bringing 2 cups.
# キーが存在しないとき以下のようになる。
picnic_items = {'apples': 5, 'cups': 2}
print('I am bringing' + str(picnic_items.get('eggs', 0)) + ' cups.'
I am bringing 0 cups.

setdefault()メソッド

辞書にキーが未登録の場合、キー・バリュー・ペアを登録することができる。
第1引数に調べたいキーを、第2引数にそのキーが存在しないとき登録する値を入力する。

spam = {'name': 'Pooka', 'age': 5}
spam.setdefault('color', 'black')
spam
{'name': 'Pooka', 'age': 5, 'color': 'black'}
# 存在するときは以下のようになる。
spam = {'name': 'Pooka', 'age': 5}
spam.setdefault('color', 'white')
spam
{'name': 'Pooka', 'age': 5, 'color': 'black'}

整形表示

pprintモジュールをインポートすると、pprint()関数やpformat()関数が使用できる。
これらは辞書の内容をきれいに表示することができる。

  • pprint.pprint()

整形した辞書を表示する。
文字数をカウントするプログラムに使用すると以下のようになる。

import pprint
message='It was a bright cold day in April, and the clocks were striking thirteen.'
count={}
for character in message:
    count.setdefault(character,0)
    count[character]=count[character]+1
pprint.pprint(count)
{' ': 13,
 ',': 1,
 '.': 1,
 'A': 1,
 'I': 1,
 'a': 4,
 'b': 1,
 'c': 3,
 'd': 3,
 'e': 5,
 'g': 2,
 'h': 3,
 'i': 6,
 'k': 2,
 'l': 3,
 'n': 4,
 'o': 2,
 'p': 1,
 'r': 5,
 's': 3,
 't': 6,
 'w': 2,
 'y': 1}
  • pprint.pformat()

pprint.pprint()は画面に表示するのに対して、pprint.pformat()は画面に表示しない。
つまり以下の2つの文は同等になる。
pprint.pprint(spam)
print(pprint.pformat(spam))

続き

Pythonの基礎復習はこれだけ~3~

最初から
Pythonの基礎復習はこれだけ~1~

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4