Pythonプログラミング

【Python】9.リスト(3)listの結合、挿入、取り込み

リストの結合、挿入

リストを結合するにはextend関数を使います。
基本的に末尾に追加されます。

例)
daiku = [“左官”, “鳶”, “木挽”]
daiku.extend([“墨”,”墨汁”])
print(daiku)

出力結果)
[‘左官’, ‘鳶’, ‘木挽’, ‘墨’, ‘墨汁’]

指定した位置に挿入する場合はinsert関数です。
第一引数に位置、第二引数に挿入する要素を入れます。

例)
daiku = [“左官”, “鳶”, “木挽”]
daiku.insert(0,”墨”)
daiku.insert(2,”墨汁”)
print(daiku)

出力結果)
[‘墨’, ‘左官’, ‘墨汁’, ‘鳶’, ‘木挽’]

0は一番最初なので、最初が墨、3番目に墨汁が追加されました。

複数行のデータを取り込む

8.リスト(2)listの操作で標準入力を使用した取り込みを行いましたが、input()は単行を取り込むので、次は複数行を取り込んでみましょう。
複数行は少し手順が長くなり、モジュールのインポートが必要になります。
インタプリタや実行環境に関連した変数や関数のモジュールは「import sys」です。
この中から標準入力に関するstdin、1行を入力するreadline、あるいは複数行を入力するreadlinesという関数を使います。
input()とほぼ同様の機能で、入力数が多い場合、こちらのほうが早くなります。input() は改行文字を削除しますが、readline() は標準入力をそのまま取得します。
ではコードを書きましょう。

入力例)
import sys
for txt in sys.stdin.readlines():
print(txt.rstrip())

sysをインポートします。for文開始。txtという名前で標準入力、複数行取得を行います。txtの中身を右側削除で出力します。

入力例)
曹操
董卓
魏延

出力例)
曹操
董卓
魏延

これがただの取り込みの場合です。では、リストに格納しましょう。

例)
import sys
array = []
for txt in sys.stdin.readlines():
array.append(txt.rstrip())
print(array)

  1. sysをインポートします。
  2. 空のリストを作ります。
  3. for文開始。txtという名前で標準入力、複数行取得を行います。
  4. 空リストに対しtxtを右削除で追加します。
  5. リストの中身を出力します。

入力例)
曹操
董卓
魏延

出力例)
[‘曹操’, ‘董卓’, ‘魏延’]

リストの形になった事がわかります!
次は、先程のsplit関数を使って「,」を切り取りポイントに文章にしてみましょう。
項目と個数を入力するとメッセージを出す事にしてみましょう。

例)
import sys
for txt in sys.stdin.readlines():
words = txt.rstrip().split(“,”)
print(words[0] ,end=””)
print( “が” + words[1] + “騎あらわれた!” )

  1. sysをインポートします。
  2. for文開始。txtという名前で標準入力、複数行取得を行います。
  3. wordsに対しtxtを右削除で追加します。
  4. 文章中に”,”が現れたら分割を行います。
  5. リストのインデックス0を出力し、改行無しにします。
  6. 続きのインデックス1を出力します。

入力例)
青州兵,4

出力結果
青州兵が4騎あらわれた!

精強な青州兵が4騎も来たらピンチですね。

乱数と組み合わせる

さて今度は3.乱数で作ったおみくじを標準入力で作ってみましょう。
運勢の種類、数が表示されて、最後だけランダムに結果が現れる事にします。

例)
import random
txt = input().rstrip().split(“,”)
for enemy in txt:
print(“敵勢力は” + enemy)
num = len(txt)
print(“現れる敵は” + str(num) + “種類います”)
encount = random.randrange(num)
print(“敵に遭遇!「” + txt[encount] )

  1. 乱数のモジュールをインポートします。
  2. txtという変数に、標準入力・右側削除・カンマ区切りで代入します。
  3. for分開始。enemyという名前でtxtの数だけ繰り返します。
  4. ループ内でtxtの数だけ中身を出力します。
  5. 入力されているリストの数を数えます。
  6. リストの数を出力します。
  7. encountの中に乱数の整数を代入します。
  8. 出力結果をtxtリストのインデックスをランダムにする事でおみくじにします。

入力例)
尾張兵だ・・・行けるぞ,越後兵だ!冬までしのげ,越前兵だ、切り抜けろ!,最悪だ!武田家山県隊だ!

出力例)
敵勢力は尾張兵だ・・・行けるぞ
敵勢力は越後兵だ!冬までしのげ
敵勢力は越前兵だ、切り抜けろ!
敵勢力は最悪だ!武田家山県隊だ!
現れる敵は4種類います
敵に遭遇!「尾張兵だ・・・行けるぞ

ちょっと文章がおかしい気もしますが、実際に使うわけではないのでこんな感じでどうでしょう?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です