Atsuhiko / Web-App

Webアプリ研究会
2 stars 2 forks source link

Python入門 #10

Open yuyuyuriko78 opened 4 years ago

yuyuyuriko78 commented 4 years ago

基本中基本

条件

if a == b:
  print("aとbは等しいです")
elif a > b:
  print("aのほうが大きいです")
else:
  print("bのほうが大きいです")

関数

def 関数名( 引数 ):
  関数の処理
yuyuyuriko78 commented 4 years ago

複数の値を入れるもの

タプル

tuple = ('a', 3.14, true)
機能 書き方
要素追加 リスト名.append(値)
要素削除 リスト名.remove(値)
特定の要素を数える リスト名.count(数えたいもの)
特定の要素があるか確認する リスト名.index(確認したい値) ※4
要素数を数える len(リスト名)
要素の並び順を逆にする リスト名.reverse() もしくは 変数名=リスト名[::-1](最後から1個ずつ要素を取得)
要素を昇順に並び替える リスト名.sort()
要素を降順に並び替える リスト名.sort(reverse = True)
中身を空にする リスト名.clear()
n番目までを取得 変数名=リスト名[: n ] ※1
n番目より後を取得 変数名=リスト名[n :] ※2
n番目以降m番目までを取得 変数=リスト名[n : m] ※3
k個おきに要素を取得 変数=リスト名[::n]
すべての要素の合計値 sum(リスト名)

※1 リストがlist=["a","b","c","d","e","f"]で、dまで取りたい場合は、list[:4]である。dのインデックス番号は「3」であるが、この場合は「n番目」までを取得したい ので、n=4 である。 ※2 リストがlist=["a","b","c","d","e","f"]で、d以降を取りたい場合は、list[4:]である。 ※3 list[n:m] は、「n番目以降(nは含まない)、m番目まで取得(mは含む)」と覚える ※4 存在する場合:その要素が返される 存在しない場合:NameErrorが返される

リストの内包表記

例1

list = [1,2,3,4,5]
double = [x * 2  for x in list]

これはつまりこういうことである

list = [1,2,3,4,5]
double = []
for x in list:
// list[x] のようにしなくても、xだけでlist内要素をあらわす
  double.append(x * 2)

例2

list = [1,2,3,4,5]
even = [x * 2  for x in list  if x % 2 == 0]

これはつまりこういうことである

list = [1,2,3,4,5]
for x in list:
  if  x % 2 == 0:
    even.append(x * 2)

例3 偶数を2倍に、奇数を0倍にしたリストを作る

list = [1,2,3,4,5]
//三項演算子の記法を使う
odd = [ x*0     if  x%2==1  else  x*2     for x in list]

これはつまりこういうことである

list = [1,2,3,4,5]
odd = []
for x in list:
  if x % 2 == 0:
    odd.append(x * 2)
  else:
    odd.append(x * 0)

ディクショナリ(連想配列、マップ)

dict = {"key1": "value1", "key2": "value2"}
print(dict["key1"])
機能 書き方
値取得 変数名 = 辞書名["キー名"]
要素追加 辞書名["キー名"] = "値"
要素削除
キーの一覧取得 辞書名.keys()
値の一覧取得 辞書名.values()
キーと値の一覧取得 辞書名.items()
キーと値の組削除 del 辞書名["消したい組のキー名"]

辞書の内包表記

例1 男性にはMr.をつけ、女性にはMs.を付ける


person = { "Bob":"male" , "John":"male", "Jessica":"female"}
dear = [ str("Mr."+k)  if v == "male"  else  str("Ms."+k)   for k,v in person.items()]
``` 
- 辞書名.items() で、キーと値の組を取得。for k,v のkはキー、vは値を指す。
Atsuhiko commented 4 years ago

リストとタプルはすぐ混同してしまいます。

yuyuyuriko78 commented 4 years ago

繰り返し

リスト

list = [1,2,3,4]
for i in list:
  print(i)

while

i = 0
while i < 5:
  print(i)
  i += 1
yuyuyuriko78 commented 4 years ago

クラス

class クラス名:
  クラスの中身

コンストラクタ

def __init__(self):
  self.name = "aaa"
  self.color = "red"

メンバ関数

雑メモ

インスタンス生成

変数名 = クラス名()
python java
crown = Car() Car crown = new Car();
yuyuyuriko78 commented 4 years ago

format関数

yuyuyuriko78 commented 4 years ago

ラムダ式

例1 f = lambda x: x*2   print(f(5)) これは def f(x): return x*2   print(f(5)) と同じ

例2 f = lambda a,b: a+b   print(f(3,5)) これは def f(a,b): return a+b   print(f(3,5)) と同じ

例3

f = lambda x: x*2 
num=[1,2,3,4,5] 
double=list(map(f, num)) 
print(double)
yuyuyuriko78 commented 4 years ago

ファイルの操作

例1「student.csv」というファイルを、読み込み専用モードで開く

with open('student.csv', 'r') as f:
  data = f.readlines()
  print(data)

例2「student.csv」ファイルを1行ごとに全て読み込み、1行ずつ出力する

with open('student.csv', 'r') as f:
  data = f.readlines()
  for line in data:
    print(line)

例3「student.csv」ファイルを1行ごとに全て読み込み、1行ずつ、名前とスコアをそれぞれキーと値として保存する。全員のスコアの平均値を求め、スコアが高い順に並べる。

with open('student.csv', 'r') as f:
  # 空の辞書studentを生成
  student = {}
  data = f.readlines()
  for line in data:
    # カンマで区切り、[name, score]というリストにする
    line = line.strip().split(",")
    name = line[0]
    score = int(line[1])
    # 辞書studentに、nameをキーにscoreを値として入れる。
    student[name] = score 
  average = sum(student.values()) / len(student)
  ranking = sorted(student.items(), key=lambda x: x[1], reverse=True)
  for s in student:
    print( "名前: {}, スコア: {} ".format(s[0], s[1]))
Atsuhiko commented 4 years ago

しばらくチェックしていない間にずいぶん充実しましたね。 ありがとうございます。