LoginSignup
1
1

More than 3 years have passed since last update.

Pythonの数値、文字列、リスト型(Python学習メモ①)

Last updated at Posted at 2019-11-01

Pythonの型

数値

ポイント

  • 除算(/)は常にfloatを返す
  • 切り下げ除算を行ってint型を得たい場合は // 演算子を使う
  • 剰余を得たい場合は%を使う
  • 演算対象の型が混在していた場合は、整数は浮動小数点数に変換される
  • 対話モードでは、最後に表示した式を変数「_」に代入してあるので電卓と使用するのに楽
  • Pythonでは整数型、浮動小数点数型以外にも、十進数(Decimal)や有理数(Fraction)などがサポートされている
  • 複素数もサポートされており、虚部を表現するのに接尾辞にjまたはJを使用して3+5jなどとする

# 足し算
>>> 2+2              
4

# 引き算と掛け算
>>> 50 - 5 * 6        
20                   
>>> (50 - 5) *6      
270

# 割り算
>>> 17 / 3       
5.666666666666667
>>> 17 // 3      
5                
>>> 17 % 3       
2

# 商と剰余を両方取得する
>>> divmod(17, 3)
(5, 2)

# 基数
# 0b: 2進
# 0o: 8進
# 0x: 16進
>>> 0b10
2
>>> 0o10
8
>>> 0x10
16

# 累乗
>>> 5 ** 2
25
>>> 5 ** 3
125

# 対話モードを電卓として使う
>>> _ + 1
126

文字列型

ポイント

  • 引用符にはシングルクォート、ダブルクォートどちらも使用でき、区別されない
  • クォート文字のエスケープは\でできる
  • \を前置した文字列が特殊文字に解釈されるのが嫌な場合はraq文字列を使う
  • 複数行の文字列はトリプルクォートで表現できる
  • 行末文字は自動的に文字列に含まれるが、改行したくない場合は行末に\を置くとエスケープされる
  • 文字列は+演算子で結合でき、*で繰り返すこともできる
  • 文字列リテラルが連続している場合は自動で連結される
  • 文字列はインデックス指定が可能
  • インデックスは文字と文字の間を指す数字であり、最初の文字が0番目となる(0から始まる)
  • 文字列はスライシングも可能
  • インデックスで範囲外の値を指定するとエラーになる
  • スライシングは範囲外を指定してもエラーにはならない
  • pythonの文字列はimmutableなので、インデックスを利用して文字の改変を行うことはできない(やりたい場合は新たに文字列を生成する)
  • len関数は文字列の長さを返す
# パス名には / を使えるので,以下は不要
# raw name (文字列の前にrをつける)
>>> print('C:\some\name')
C:\some
ame
>>> print(r'C:\some\name')
C:\some\name

# 複数行
print("""\
    Usage: thingy [OPTIONS]
        -h Display this usage message
        -H hostname   
""")
# 出力
Usage: thingy [OPTIONS]
        -h Display this usage message
        -H hostname

# 文字列の繰り返しと連結
>>> 3 * "un" + "ium" 
'unununium'

# 文字列リテラルの自動連結(変数では使えない)
>>> 'Py' 'thon' 
'Python'

# index
>>> word[0]
'P'
>>> word[-1] 
'n'

# slice
>>> word[:3] 
'Pyt'
>>> word[3:] 
'hon'

# len
>>> len(word) 
6

リスト

ポイント

  • 基本的には同じ型を入れる
  • 文字列同様、インデックスとスライシングが使える
  • スライシングは常に要求された要素を含んだ新たなリストを返す
  • リストは文字列と違ってmutableなので変更可能
  • .appendで末尾に要素を追加する
  • スライシングへの代入も可能
  • len関数はリストにも使える
  • リストは入れ子にできる
# リスト
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f']
# index
>>> letters[1] 
'b'

# slicing
>>> letters[3:] 
['d', 'e', 'f']

# append
>>> letters.append('g') 
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']

# slicingへの代入
>>> letters[3:5] = ['D', 'E'] 
>>> letters
['a', 'b', 'c', 'D', 'E', 'f', 'g']

# len
>>> len(letters)
7

# 入れ子のリスト
>>> array = [['a', 'b', 'c'], [1, 2, 3]] 

フィボナッチ数列を求める


# フィボナッチ級数
# このように多重代入が可能
a, b = 0, 1

while b < 10:
    print(b)
    a, b = b, a+b

print関数について

  • 複数値を引数に指定可能
  • キーワード引数endを使うと、出力末尾の改行の抑制や、出力末尾を他の文字列に変更することができる
  • キーワード引数sepを使うと、出力される値を区切る文字列を変更できる
name = 'Kawausomando'
# 複数値指定(間にはスペースが付与される)
print('My name is', name)
# 出力: My name is Kawausomando

# endキーワード 
print(name, end=' is my name')
# 出力: Kawausomando is my name

# sepキーワード
print(1, 2, 3, sep=' and ')
# 出力: 1 and 2 and 3
1
1
2

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
1
1