乙Py先生のプログラミング教室

乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

                 20.リスト1

プログラム言語の中では特殊なデータの形を取り扱うことができます。

それが辞書型やリスト型といったデータ構造のものです。

pythonではリスト型というデータ構造を定義できます。
リスト型のデータを作るには [ ] 四角カッコ を用います。 
四角カッコで括った中に、格納したいデータの形でデータを入力します。

リスト型の値は、要素を複数持つことができます。
リストの値に要素をたくさん入れ込むには カンマ でつなぎます。
[]
[要素,要素,・・・]

例:
[1,2,3]

リスト型の定義

In [1]:
# リスト型
[1,2,3,4,5]
Out[1]:
[1, 2, 3, 4, 5]
In [2]:
# 空のリスト(まだ要素を持っていない)
[]
Out[2]:
[]

インデックスと間違いやすいので注意

In [3]:
# これはインデックス
'abcde'[3]
Out[3]:
'd'
In [4]:
# リスト型の変数を定義
a = [1,2,3]
print(a)
print(type(a))
[1, 2, 3]
<class 'list'>

リスト型というのは複数の要素を持ったデータ構造になっていて、
リスト型の中に入れられるデータの形については特に決まりはなく
どんなデータでも入れられます。

In [5]:
a = [1,2,3,'4']
print(a)
[1, 2, 3, '4']

リストの中にリストを格納できます。

要素を取り出したい場合は
リストの分だけインデックスを用います。

In [6]:
# リストの中にリストを定義
lis_lis = [[1,2,3],[4,5,6],[7,8,9]]
print(lis_lis)

# 取り出しもインデックスで
print(lis_lis[1][2])
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
6

リストの要素の追加

変数.append(要素)

変数 += リスト
変数.extend(リスト)
リスト + リスト

In [7]:
a = [1,2,3]
# 要素の追加 append
a.append(4)
print(a)
[1, 2, 3, 4]
In [8]:
a = [1,2,3]
# 要素の追加 +=
a += a
print(a)
[1, 2, 3, 1, 2, 3]
In [9]:
a = [1,2,3]

# 要素の追加 extend
a.extend([4,5])
print(a)
[1, 2, 3, 4, 5]
In [10]:
a = [1,2,3]

# 要素の追加 リスト + リスト
a = a + a
print(a)
[1, 2, 3, 1, 2, 3]

値を一つだけ入れるのがappend

その他はリストをリストに追加する方法です。

リスト型の値は複数の要素をいれ込めるので
取り出し方も様々な取り出し方があります。

インデックスを使って参照する方法

In [11]:
a = [1,2,3]
# 最初の要素を取り出す
print(a[0])
print(type(a[0]))
1
<class 'int'>
In [12]:
a = [1,2,3,4,5]
# 複数の要素を取り出す(3番目から4番目まで)
print(a[2:4])
print(type(a[2:4]))
[3, 4]
<class 'list'>
In [13]:
a = [1,2,3,4,5]
# 複数の要素を取り出す(2番目から最後まで)
print(a[1:])

# 複数の要素を取り出す(最初から3番目まで)
print(a[:3])
[2, 3, 4, 5]
[1, 2, 3]

リストでは要素の順番が重要になります。

スライスを使うと複数の要素に対応します。

要素の変更

リスト型変数[インデックス値] = 変更後の値

リスト型変数[開始:終了] = [リスト]
リスト型変数[開始:] = [リスト]
リスト型変数[:終了] = [リスト]

In [14]:
a = [1,2,3,4,5]
print(a)
# 3番目の要素を 9 に変更
a[2] = 9
print(a)
[1, 2, 3, 4, 5]
[1, 2, 9, 4, 5]
In [15]:
a = [1,2,3,4,5]
# 複数の要素を変更(3番目から4番目まで
a[2:4] = [9,8]
print(a)

a = [1,2,3,4,5]
# 複数の要素を変更(2番目から最後まで)
a[1:] = [7,6]
print(a)

a = [1,2,3,4,5]
# 複数の要素を変更(最初から3番目まで)
a[:3] = [8,8,8,8]
print(a)
[1, 2, 9, 8, 5]
[1, 7, 6]
[8, 8, 8, 8, 4, 5]

インデックスの開始、終了を用いた場合は
複数の要素が同時に置き換わるので
順番にも影響が出ます。注意しましょう。

                19.基礎演習1

さーてみなさん、ここまでの講義のおさらいをしてみましょう。

ここまででやったこととしては・・
演算の仕方、文字列の書き方、インデックスって何・・
変数とデータ型、いろいろな演算子

他のプログラム言語でも共通した考えになる部分をやりました。
今回の講義はそのおさらいとなります。

復習用の問題を用意しましたので、それを解いてみましょう。
もしわからなければ、今までの講義の動画をもう一度見てみましょう。

In [ ]:
 

基礎演習問題1:

文字列型の変数を宣言してみよう(値は任意で10文字以上)

In [ ]:
 

基礎演習問題2:

5文字以上の文字列型の変数を作成し、4番目の文字を取り出そう。

In [ ]:
 

基礎演習問題3:

文字列型の変数を作成し、改行、タブを含めた文章を代入する。

In [ ]:
 

基礎演習問題4:

format関数を使い次の文章の入力部(波カッコ)に、
任意の名前を入れてを出力する : 

私がナイツの{0}です、相方の名前はね、ちょっと汚い話になりますが・・・{1}です。

In [ ]:
 

基礎演習問題5:

5桁の整数型の変数を作成し,
これを文字列に直し7ケタで0埋めして出力する。

In [ ]:
 

基礎演習問題6:

2つの整数型の変数に整数値を入れて、その大小を比較する文を書く。

In [ ]:
 

基礎演習問題7:

次の文章の中に、「浦和」という言葉がいくつあるか数える文を書く。

浦和、南浦和、北浦和、東浦和、西浦和、武蔵浦和、中浦和、浦和は7つの駅がある。

In [ ]:
 

基礎演習問題8:

無駄 を改行ありで10回表示させる文を書く。

In [ ]:
 

基礎演習問題9:

9の9乗を計算する文を書く、

In [ ]:
 

基礎演習問題10:

9の20乗と20の9乗 、どちらが大きいか、判定結果を出力する文を書く。

In [ ]:
 

すぐに答えが出ない人は、動画を止めて考えてみましょう。

コツとしては何を入力したら、どう計算されて、どう出力されるのか
それを考えながら書いてみましょう。

答えはこの下に





回答

基礎演習問題1:

文字列型の変数を宣言してみよう(値は任意で10文字以上)

In [1]:
# データとして文字列にするにはシングルクォートかダブルクォートで囲むだけ
answer = '生麦生米なまたまご、字足らず'
print(answer)
生麦生米なまたまご、字足らず

基礎演習問題2:

5文字以上の文字列型の変数を作成し、4番目の文字を取り出そう。

In [2]:
# インデックスを用いてx番目のデータを取り出せる
# 4番目のインデックス値は 3
answer = '123456789'
print(answer[3])
4

基礎演習問題3:

文字列型の変数を作成し、改行、タブを含めた文章を代入する。

In [3]:
# まず文字列型の変数を用意
# 改行やタブはエスケープシーケンスを用いて表現する
answer = 'こんにちは 福山雅治です、\n私は\tおおきい\tです。'
print(answer)
こんにちは 福山雅治です、
私は	おおきい	です。

基礎演習問題4:

format関数を使い次の文章の入力部(波カッコ)に、
任意の名前を入れてを出力する : 

私がナイツの{0}です、相方の名前はね、ちょっと汚い話になりますが・・・{1}です。

In [4]:
# まず文字列型の変数を用意
answer = '私がナイツの{0}です、相方の名前はね、ちょっと汚い話になりますが・・・{1}です。'
# format関数を使って値を差し込む
print(answer.format('塙','小峠'))
私がナイツの塙です、相方の名前はね、ちょっと汚い話になりますが・・・小峠です。

基礎演習問題5:

5桁の整数型の変数を作成し,
これを文字列に直し7ケタで0埋めして出力する。

In [5]:
# まずは5桁の整数型の変数を用意
answer = 12345

# これを文字列に直し7ケタで0埋めして出力する。
# フォーマット関数を使うと数値型のものを文字列の中に差し込みできる。
# 0埋めは、: コロン のあとに埋めたい文字 0を入れ桁数7を入力する
'{0:07}'.format(answer)
Out[5]:
'0012345'

基礎演習問題6:

2つの整数型の変数に整数値を入れて、その大小を比較する文を書く。

In [6]:
# まずは二つの数値を用意
a , b = 20 , 30

# 大小の比較は 比較演算子(関係演算子)を用いる
print(a < b)
print(a > b)
True
False

基礎演習問題7:

次の文章の中に、「浦和」という言葉がいくつあるか数える文を書く。

浦和、南浦和、北浦和、東浦和、西浦和、武蔵浦和、中浦和、浦和は7つの駅がある。

In [7]:
# まずは文字列型の変数を用意
answer = '浦和、南浦和、北浦和、東浦和、西浦和、武蔵浦和、中浦和、浦和は7つの駅がある。'

# count関数で文字の個数を数えることができる。
print(answer.count('浦和'))
8

基礎演習問題8:

無駄 を改行ありで10回表示させる文を書く。

In [8]:
# アスタリスクを使うと、文字の繰り返しを表現できる。
# 改行は ¥n もしくは \n
print('無駄\n' * 10)
無駄
無駄
無駄
無駄
無駄
無駄
無駄
無駄
無駄
無駄

基礎演習問題9:

9の9乗を計算する文を書く、

In [9]:
# 掛け算はアスタリスク一個 , 累乗はアスタリスク2個
print(9 ** 9)
387420489

基礎演習問題10:

9の20乗と20の9乗 、どちらが大きいか、判定結果を出力する文を書く。

In [10]:
# 9の20乗と20の9乗 を比較演算子で大小を比較する
print(20 ** 9 < 9**20)
True

ここまでは基礎だけで、書き方の部分しか触れておらず
まだ本格的なプログラミングには入っていません。

ちょっと退屈かもしれませんが、これからもっと面白くなっていきますので
引き続きプログラミングをお楽しみください。
復習も忘れずに!!

                 18.論理演算子

「論理演算子」は

比較の結果同士を加算した結果を返します。

幾つかの条件を組み合わせる場合には必ず用いる方法です。

論理演算子 としては 3つしかありません。
and
or
not

and

and は条件と条件をつなげます。
日本語だと かつ という意味合い

条件A and 条件B

条件が双方が True の場合に True 
どちらか一方でもFalseなら結果がFalseになります。

and の左側と右側の両方の条件を満たしていないと
Trueにはなりません。

In [1]:
# 二つの条件がTrue
print(True and True)

# 片方の条件がFalse
print(True and False)
print(False and True)

# 両方の条件がFalse
print(False and False)
True
False
False
False
In [2]:
# 数値型での例
print(1==1 and 2==2)
print(1==1 and 2==1)
True
False

男性、20代の人のような複数の条件を満たす判定を
行いたいような時に使います。

In [3]:
a , b = 20 , '男性'
print(a==20 and b == '男性')
True

or

orの左側と右側、どちらかの条件がTrueであればTrueを返します。
日本語の意味だと もしくは という意味合いです。

条件A or 条件B

両方満たしていればTrue
どちらか一方でも合っていればTrueが返ってきます。
両方の条件を満たせない場合のみFalseが返ってきます。

In [4]:
# 二つの条件がTrue
print(True or True)

# 片方の条件がFalse
print(True or False)
print(False or True)

# 両方の条件がFalse
print(False or False)
True
True
True
False
In [5]:
# 両方の条件を満たす場合
a , b = 20 , '男性'
print(a==20 or b == '男性')

# どちらかの条件を満たす場合
a , b = 20 , '男性'
print(a==30 or b == '男性')

# 両方の条件を満たさない場合
a , b = 20 , '男性'
print(a==30 or b == '女性')
True
True
False

not

否定する意味合いになり、結果をひっくり返します。

True はFalseに 、 FalseはTrueにします。

In [6]:
# 含む場合
d = '男性'
print('男'  in d)
True
In [7]:
# 含まれないとしたい場合
d = '男性'
print('男'  not in d)
False

プログラムの中での制御は比較演算子と論理演算子を組み合わせて
どう処理を分岐させるか、続けさせるのかを組み上げていきますので
論理演算子の使い方も覚えておきましょう。

このページのトップヘ