int【整数型】3.1 / 3.2 / 3.4 / 3.6~3.8 / 3.103.12

メモ

概要

  • long【長整数型】は int【整数型】に統合 3.0
  • 桁数制限なし
  • 桁の区切りにアンダースコア(_) を利用可 3.6

変換

  • int【整数型】 ⇒ 文字列〔
下記以外の寄せ等は、 str【文字列型】format【書式化】の置換フィールドを参照
変換先組み込み関数 フォーマット済み文字列リテラル (f'~') 3.6str.format【書式化】 の置換フィールド
進数指定
(type表現型)
プレフィックス有無
(#別形式)
区切り
(grouping_optionグルーピング指定)
ゼロパディング
(0ゼロパディング)
(width最小フィールド幅)
10進数str【文字列変換】 d【10進数】
省略【10進数】
カンマ(,):3桁毎にカンマ
アンダースコア(_) 3.63桁毎に '_'
両方指定:ゼロパディング
2進数bin【2 進文字列変換】
プレフィックス:0b
b【2進数】指定有:0b アンダースコア(_) 3.64桁毎に '_'
8進数oct【8 進文字列変換】
プレフィックス:0o
o【8進数】指定有:0o
16進数hex【16 進文字列変換】
プレフィックス:0x
a ~ f は小文字
x【16進数 (小文字)】
X【16進数 (大文字)】
指定有:0x
指定有:0X

算術演算・ビット演算

  • float【浮動小数点数型】との演算:float【浮動小数点数型】に変換
  • complex【複素数型】との演算:complex【複素数型】に変換
優先順位演算備考
高いx ** y xy
(参照:その他演算のpow【べき乗・剰余】)
+x x そのまま
-x x の符号反転
~xx のビット反転
x * y xy の積
x / y xy の商
x // y xy の商を切り下げ
x % y x / y の剰余
x + y xy の和
x - y xy の差
x << n xn ビット左シフト
x >> n xn ビット右シフト
x & y xy のビット論理積
x ^ y xy のビット排他的論理和
x | y xy のビット論理和
低い比較演算

比較演算

  • 連鎖可能 (例:x < y < z)
  • 全て同じ優先順位
演算備考
x < yより小さい
x <= y以下
x > yより大きい
x >= y以上
x == y等しい
x != y等しくない
x is y同一オブジェクト
x is not y同一オブジェクトでない

その他演算

演算備考
組み込み関数 abs(x)x の絶対値
divmod(x, y) 商・剰余 (x // y, x % y)
float(x)x の浮動小数点数変換
pow(x, y) べき乗・剰余 (baseexp % mod)
round(x[, n])丸め
標準ライブラリ
math【数学関数】
ceil(x)最小整数
floor(x)最大整数
trunc(x)整数切り捨て

リテラル・コンストラクタ・メソッド

メソッド関連
リテラル
リテラル (10進数・2進数・8進数・16進数)
コンストラクタ・型変換
int([x])
int(x, base=10)
コンストラクタ
型変換
メソッド
as_integer_ratio( ) 3.8 分数表現 (分子, 分母)
分母:1
bit_length( )3.1 2進法のビット数
bit_count( ) 3.102進法の1の数
classmethod from_bytes(bytes, byteorder,  *, signed=False) 3.2 バイト列の整数表現
is_integer( )3.12 整数値判定
戻り値:True
※ダックタイピング互換性:float.is_integer( )
to_bytes(length, byteorder,  *, signed=False) 3.2 バイト列変換

例 (概要)

n = 0xFFFF_FFFF
print(n)
# 出力:4294967295
n = 1234567890_1234567890_1234567890_1234567890
print(n)
# 出力:1234567890123456789012345678901234567890

例 (変換)

# 10進数
n10 = 1234567890
print(n10)
# 出力:
print(str(n10))
# 出力:1234567890
print(f'{n10:,}')
# 出力:1,234,567,890
print(f'{n10:_}')
# 出力:1_234_567_890
print(f'{n10:012}')
# 出力:001234567890
print('{:,}'.format(n10))
# 出力:1,234,567,890
print('{:_}'.format(n10))
# 出力:1_234_567_890
print('{:012}'.format(n10))
# 出力:001234567890

# 2進数
n2 = 0b1111_0000
print(n2)
# 出力:240
print(bin(n2))
# 出力:0b11110000
print(f'{n2:b}')
# 出力:11110000
print(f'{n2:#b}')
# 出力:0b11110000
print(f'{n2:_b}')
# 出力:1111_0000
print(f'{n2:012b}')
# 出力:000011110000
print(f'{n2:#021_b}')
# 出力:0b0000_0000_1111_0000
print('{:b}'.format(n2))
# 出力:11110000
print('{:#b}'.format(n2))
# 出力:0b11110000
print('{:_b}'.format(n2))
# 出力:1111_0000
print('{:012b}'.format(n2))
# 出力:000011110000
print('{:#021_b}'.format(n2))
# 出力:0b0000_0000_1111_0000

# 8進数
n8 = 0o1234567
print(n8)
# 出力:342391
print(oct(n8))
# 出力:0o1234567
print(f'{n8:o}')
# 出力:1234567
print(f'{n8:#o}')
# 出力:0o1234567
print(f'{n8:_o}')
# 出力:123_4567
print(f'{n8:012o}')
# 出力:000001234567
print(f'{n8:#016_o}')
# 出力:0o0000_0123_4567
print('{:o}'.format(n8))
# 出力:1234567
print('{:#o}'.format(n8))
# 出力:0o1234567
print('{:_o}'.format(n8))
# 出力:123_4567
print('{:012o}'.format(n8))
# 出力:000001234567
print('{:#016_o}'.format(n8))
# 出力:0o0000_0123_4567

# 16進数
n16 = 0x123456789ABCDEF
print(n16)
# 出力:81985529216486895
print(hex(n16))
# 出力:0x123456789abcdef
print(f'{n16:x}', f'{n16:X}')
# 出力:123456789abcdef 123456789ABCDEF
print(f'{n16:#x}', f'{n16:#X}')
# 出力:0x123456789abcdef 0X123456789ABCDEF
print(f'{n16:_x}', f'{n16:_X}')
# 出力:123_4567_89ab_cdef 123_4567_89AB_CDEF
print(f'{n16:020x}', f'{n16:020X}')
# 出力:00000123456789abcdef 00000123456789ABCDEF
print(f'{n16:#026_x}', f'{n16:#026_X}')
# 出力:0x0000_0123_4567_89ab_cdef 0X0000_0123_4567_89AB_CDEF
print('{:x}'.format(n16), '{:X}'.format(n16))
# 出力:123456789abcdef 123456789ABCDEF
print('{:#x}'.format(n16), '{:#X}'.format(n16))
# 出力:0x123456789abcdef 0X123456789ABCDEF
print('{:_x}'.format(n16), '{:_X}'.format(n16))
# 出力:123_4567_89ab_cdef 123_4567_89AB_CDEF
print('{:020x}'.format(n16), '{:020X}'.format(n16))
# 出力:00000123456789abcdef 00000123456789ABCDEF
print('{:#026_x}'.format(n16), '{:#026_X}'.format(n16))
# 出力:0x0000_0123_4567_89ab_cdef 0X0000_0123_4567_89AB_CDEF

リテラル・コンストラクタ・型変換

メモ

  • リテラル
    • 紛らわしい8進数表記は不可 3.0 (例:0123)
      (C言語で有効なプリフィックスなしの8進数)

構文

10進数
N~N
(N:0~9 / 0以外:先頭の0不可)

2進数
0bN~N
0BN~N
(N:0 | 1)

8進数
0oN~N
0ON~N
0N~N の形式は不可 3.0
(N:0~7)

16進数
0xN~N
0XN~N
(N:0~9 | a~f | A~F)

・10進数を除くNの先頭 及び N の間に1つのアンダースコア(_) 可 3.6
・符号については、算術演算 参照
int([x※1])
int(x※2, base=10)

戻り値整数オブジェクト
x (位置引数のみ3.7 )※1数値 (省略:0)
float【浮動小数点数】0 に近い側へ切り捨て
(定義があれば x.__int__ 呼び出し)
(x.__int__ が存在しない場合、定義があれば x.__index__ 呼び出し 3.8)
x (位置引数のみ3.7 )※2文字列・bytes【バイト配列 (不変)】・bytearray【バイト配列 (可変)】
符号指定可 (+・-)
プリフィックス可 (0b・0B・0o・0O・0x・0X)
前後にスペース可
区切りのアンダースコア(_)可 3.7
base基数 (整数:0・2~36)
0自動認識 (明示的な指定が必要)
(base.__int__ base.__index__ 3.4 メソッドが存在する場合、呼び出し)

# 10進数
n10_1 = 123456789
print(n10_1)
# 出力:123456789
n10_2 = 123_456_789
print(n10_2)
# 出力:123456789

# 2進数
n2_1 = 0b11110000
print(bin(n2_1))
# 出力:0b11110000
n2_2 = 0B_1111_0000
print(bin(n2_2))
# 出力:0b11110000

# 8進数
# n8_0 = 01234567  # SyntaxError
n8_1 = 0o1234567
print(oct(n8_1))
# 出力:0o1234567
n8_2 = 0O_0123_4567
print(oct(n8_2))
# 出力:0o1234567

# 16進数
n16_1 = 0x123456789abcdef
print(hex(n16_1))
# 出力:0x123456789abcdef
n16_2 = 0X_0123_4567_89AB_CDEF
print(hex(n16_2))
# 出力:0x123456789abcdef
n_1 = int()
print(n_1)
# 出力:0
n_2 = int(123456789)
print(n_2)
# 出力:123456789
n_3 = int(1234.5678)
print(n_3)
# 出力:1234

n10_1 = int('123456789')
print(n10_1)
# 出力:123456789
n10_2 = int('  +123456789  ')
print(n10_2)
# 出力:123456789
n10_3 = int('123_456_789')
print(n10_3)
# 出力:123456789

n2_1 = int('11110000', 2)
print(f'{n2_1:#_b}')
# 出力:0b1111_0000
n2_2 = int('  0b11110000  ', 2)
print(f'{n2_2:#_b}')
# 出力:0b1111_0000
n2_3 = int('0b_1111_0000', 2)
print(f'{n2_3:#_b}')
# 出力:0b1111_0000

n8_1 = int('1234567', 8)
print(f'{n8_1:#_o}')
# 出力:0o123_4567
n8_2 = int('  0o1234567  ', 8)
print(f'{n8_2:#_o}')
# 出力:0o123_4567
n8_3 = int('0o_123_4567', 8)
print(f'{n8_3:#_o}')
# 出力:0o123_4567

n16_1 = int('123456789ABCDEF', 16)
print(f'{n16_1:#_x}')
# 出力:0x123_4567_89ab_cdef
n16_2 = int('  0x123456789ABCDEF  ', 16)
print(f'{n16_2:#_x}')
# 出力:0x123_4567_89ab_cdef
n16_3 = int('0x_123_4567_89AB_CDEF', 16)
print(f'{n16_3:#_x}')
# 出力:0x123_4567_89ab_cdef

n36 = int('z', 36)
print(n36)
# 出力:35

n_1 = int('123456789', 0)
print(n_1)
# 出力:123456789
n_2 = int('0b11110000', 0)
print(bin(n_2))
# 出力:0b11110000
n_3 = int('0o1234567', 0)
print(oct(n_3))
# 出力:0o1234567
n_4 = int('0x123456789ABCDEF', 0)
print(hex(n_4))
# 出力:0x123456789abcdef

bit_length【2進法のビット数】3.1
bit_count【2進法の1の数】3.10

メモ

メソッド備考
bit_length【2進法のビット数】符号と先頭の 0 は除外 (0の場合は0)
bit_count【2進法の1の数】

構文

int.bit_length( ) 3.1

戻り値2進法のビット数 (符号と先頭の 0 は除外)
int.bit_count( ) 3.10

戻り値2進法の1の数

b_1 = 0b1111_0000
print(b_1.bit_length())
# 出力:8
b_2 = 0b0011_0011
print(b_2.bit_length())
# 出力:6
b_3 = 0
print(b_3.bit_length())
# 出力:0
b_1 = 0b1111_0000
print(b_1.bit_count())
# 出力:4
b_2 = 0b0011_0011
print(b_2.bit_count())
# 出力:4
b_3 = 0
print(b_3.bit_count())
# 出力:0

to_bytes【バイト列変換】3.2
classmethod from_bytes【バイト列の整数表現】3.2

メモ

  • バイト列と整数の変換

構文

int.to_bytes(length, byteorder, *, signed=False) 3.2

戻り値バイト列
lengthバイト数
byteorderバイトオーダー
"big"最上位のバイト  最下位のバイト の順
"little"最下位のバイト  最上位のバイト の順
sys.byteorderシステムのバイトオーダー
signed (キーワード引数)2 の補数の使用有無 (省略:False)
例外OverflowError 例外
length のバイト数では不足
負の整数で signed が False

※ * は、キーワード引数との区切り (def【関数定義】 参照)
classmethod int.from_bytes(bytes, byteorder, *, signed=False) 3.2

戻り値整数値
bytesバイト列 (バイト列風オブジェクト・バイト列を生成するイテラブル)
バイト列風オブジェクトbytes-like object 参照
byteorderバイトオーダー
"big"最上位のバイト  最下位のバイト の順
"little"最下位のバイト  最上位のバイト の順
sys.byteorderシステムのバイトオーダー
signed (キーワード引数)2 の補数の使用有無 (省略:False)

※ * は、キーワード引数との区切り (def【関数定義】 参照)

n = 0x1111_0000
print(n.to_bytes(4, 'big'))
# 出力:b'\x11\x11\x00\x00'
print(n.to_bytes(4, 'little'))
# 出力:b'\x00\x00\x11\x11'
b = b'\x11\x11\x00\x00'
n = int.from_bytes(b, 'big')
print(hex(n))
# 出力:0x11110000
n = int.from_bytes(b, 'little')
print(hex(n))
# 出力:0x1111

as_integer_ratio【分数表現】3.8

メモ

  • float【浮動小数点数型】に合わせる為に追加 3.8
  • 分母は1

構文

int.as_integer_ratio() 3.8

戻り値(分子, 分母)の tuple【タプル】 (分母:1)

lst = [1, 10, 100, 1000, 1234567890_1234567890]
for n in lst:
    print(n.as_integer_ratio())
# 出力:(1, 1)
# 出力:(10, 1)
# 出力:(100, 1)
# 出力:(1000, 1)
# 出力:(12345678901234567890, 1)