ラベル 組み込み関数 の投稿を表示しています。 すべての投稿を表示
ラベル 組み込み関数 の投稿を表示しています。 すべての投稿を表示

2022年5月7日土曜日

【組み込み関数】reversed、スライシングによるイテラブルオブジェクトの反転

 組み込み関数reversedはリストやタプルなどのイテラブルオブジェクトの要素の順番を逆にしたイテレーターを生成する。生成したイテレーターをイテラブルオブジェクトに変換することでイテラブルオブジェクトが反転する。また、スライシングでstepを-1とすることで後ろから要素が取得され、イテラブルオブジェクトの反転ができる。




1. reversedによるリスト、タプルの反転

 reversedはイテラブルオブジェクトの要素の順番を逆にしたイテレータを生成する。

a = [1, 2, 3]

print(reversed(a))

 実行結果

<list_reverseiterator object at 0x000001883EDBDF00>

 逆順のリストやタプルにする場合はlist、tuple関数でイテラブルオブジェクトに変換する。

a = [1, 2, 3]

print(list(reversed(a)))

 実行結果

[3, 2, 1]


a = (1, 2, 3)

print(tuple(reversed(a)))

 実行結果

(3, 2, 1)


 元のリストやタプルは維持される。

a = [1, 2, 3]

print(list(reversed(a)))
print(a)

 実行結果

[3, 2, 1]
[1, 2, 3]


2. reversedによる文字列の反転

 文字列を反転させる場合、reversedで反転したイテレーターをリスト化する。

a = '123'

print(list(reversed(a)))

 実行結果

['3', '2', '1']


 このリストを文字列化するにはjoinを使う。

a = '123'

print(''.join(list(reversed(a))))

 実行結果

321


3. スライシングによるイテラブルオブジェクトの反転

 スライシングでstepに-1を指定すると「後ろから順に」イテラブルオブジェクトの要素を取得できる。これによりリスト、タプル、文字列を反転できる。

a = [1, 2, 3]

print(a[::-1])

 実行結果

['3', '2', '1']


a = (1, 2, 3)

print(a[::-1])

 実行結果

(3, 2, 1)


a = '123'

print(a[::-1])

 実行結果

321


4. リファレンス

Python 標準ライブラリ > 組み込み関数 > reversed(seq)

使用したバージョン:Python 3.10.4

2021年11月27日土曜日

【組み込み関数】max,minによる要素の最大値、最小値

 組み込み関数maxでイテラブルオブジェクトの最大の要素、minでイテラブルオブジェクトの最小の要素が求められる。




1. max,minの書式

 max,minの書式は以下の通り。
イテラブルオブジェクトiterableまたは2つ以上の要素argから最大値、最小値を求める。キーワード引数keyには要素に対する処理の関数を記述する。defaultは要素が空の場合に返す値を記述する。

max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])

min(iterable, *[, key, default])
min(arg1, arg2, *args[, key])

 リストxの中から最大値を求める場合。

x = [-1, -0.5, 1, 2, 3]
print(max(x))

実行結果

3

 リストxの中から最小値を求める場合。

x = [-1, -0.5, 1, 2, 3]
print(min(x))

実行結果

-1

 keyに関数1/xを指定し、その結果の大小に応じて最大値を求める場合。
1/xの値は要素が1の場合に最も大きくなるため1が求まる。

x = [-1, -0.5, 1, 2, 3]
print(max(x, key=lambda x: 1/x))

実行結果

1

 keyに関数1/xを指定し、その結果の大小に応じて最小値を求める場合。
1/xの値は要素が-0.5の場合に最も小さくなるため-0.5が求まる。

x = [-1, -0.5, 1, 2, 3]
print(min(x, key=lambda x: 1/x))

実行結果

-0.5

 要素が空の場合にmax,minを求めるとエラーとなる。

x = []
print(max(x))

実行結果

ValueError: max() arg is an empty sequence

 defaultを指定すれば要素が空の場合にもエラーとならず、設定した値が返される。

x = []
print(max(x, default=0))

実行結果

0


2. 要素が文字列の場合

 要素が文字列の場合にmax,minを求めると、その文字のユニコードポイントに応じて最大値、最小値が決まる。

x = ['a', '1', '+']
print(min(x), max(x)) 

実行結果

+ a

 上の例でユニコードポイントが最も小さいのは'+'、最も大きいのは'a'。

print(ord('a'), ord('1'), ord('+'))

実行結果

97 49 43


3. リファレンス

Python 標準ライブラリ > 組み込み関数 > max(iterable, *[, key, default])
Python 標準ライブラリ > 組み込み関数 > min(iterable, *[, key, default])

使用したバージョン:Python 3.8.8

2021年11月13日土曜日

【組み込み関数】mapによるリスト等の全要素への同一処理

 組み込み関数mapを使うとリスト等のイテラブルオブジェクトの全要素に対して同一処理をすることができる。




1. mapの書式

 mapの書式は以下の通り。
functionに処理する関数、iterableに処理するイテラブルオブジェクトを指定する。戻り値はイテレータになるためlist等でリテラブルオブジェクトに変換する。
functionにはユーザー定義関数もしくは無名関数lambdaを指定する。

map(function, iterable, ...)


2. 使用例

 リストaの全要素を二乗した新しいリストsqを作成する例。mapを使わずforで処理する場合。

a = [3, 5, 2, 8]
sq = []

for i in a:
    sq.append(i*i)
    
print(sq)

実行結果

[9, 25, 4, 64]


 二乗するユーザー定義関数squareを作りmapで呼び出してリストaを処理する例。

a = [3, 5, 2, 8]

def square(i):
    return i*i
    
sq = list(map(square, a))
print(sq)

実行結果

[9, 25, 4, 64]


 無名関数lambdaでmapの処理内容(ここでは要素の二乗)を指定する例。
簡潔に記述できるので、処理内容がその場限りでdefにより関数を作る必要が無ければlambdaを使う方が良い。

a = [3, 5, 2, 8]

sq = list(map(lambda i: i * i, a))
print(sq)

実行結果

[9, 25, 4, 64]


3. リファレンス

Python 標準ライブラリ > 組み込み関数 > map(function, iterable, ...)

使用したバージョン:Python 3.8.8

2021年8月22日日曜日

【組み込み関数】int,float,complexによる型変換

 整数に変換するint、浮動小数点数に変換するfloat、複素数に変換するcomplexについて説明する。



1. 整数に変換するint

 intの引数に小数を与えると整数に変換される。

print(int(10.5))

実行結果

10


 引数が整数の文字列の場合、整数に変換される。

print(int('100'))

実行結果

100


 引数が整数の文字列で第二引数に基底を指定すると、基底に基づいて整数に変換される。
次の例は基底12なので
1*12**2 + 0*12 + 0
と計算される。

print(int('100', 12))

実行結果

144


 bool値True、Falseはそれぞれ1, 0に変換される。

print(int(True), int(False))

実行結果

1 0


2. 浮動小数点数に変換するfloat

 floatは引数を浮動小数点数に変換する。

print(float(10))

実行結果

10.0


 文字列も浮動小数点数に変換される。

print(float('10'))

実行結果

10.0


 指数による記述も可能。

print(float(1e-003))

実行結果

0.001


 指数の文字列も可能。

print(float('1e-003'))

実行結果

0.001


3. 複素数に変換するcomplex

 complexは引数を複素数に変換する。
実部が2,虚部が5の場合。

print(complex(2, 5))

実行結果

(2+5j)


 虚数単位jを用いた複素数の書式でもよい。

print(complex(2+5j))

実行結果

(2+5j)


 文字列を与えてもよい。

print(complex('2+5j'))

実行結果

(2+5j)


 実部だけ与えると虚部は0となる。

print(complex(2))

実行結果

(2+0j)


 虚部だけ与えると実部は0となる。

print(complex(5j))

実行結果

5j


4. リファレンス

Python 標準ライブラリ > 組み込み関数 > int()
Python 標準ライブラリ > 組み込み関数 > float()
Python 標準ライブラリ > 組み込み関数 > complex()

使用したバージョン:Python 3.8.8

【組み込み関数】chr,ordによるUnicodeコードポイントと文字の変換

 組み込み関数chrでUnicodeコードポイントを文字に変換する。またordで文字をUnicodeコードポイントに変換する。



1. chrによるUnicodeコードポイントから文字への変換

 chrの引数にUnicodeコードポイントを与えると該当する文字に変換される。引数の範囲は0 から1,114,111(16 進数で 0x10FFFF)となる。
10進数の128640を引数にした場合。

print(chr(128640))

実行結果

'🚀'


 16進数で指定する場合は'0x'から始める。16進数の1F680(10進数では128640)を引数にした場合。

print(chr(0x1F680))

実行結果

'🚀'


2. ordによる文字からUnicodeコードポイントへの変換

 ordはchrの逆で、引数に文字を与えるとUnicodeコードポイントが返される。
引数に'🚀'を与えた場合。10進数のUnicodeコードポイントが返される。

print(ord('🚀'))

実行結果

128640


3. リファレンス

Python 標準ライブラリ > 組み込み関数 > chr()
Python 標準ライブラリ > 組み込み関数 > ord()

使用したバージョン:Python 3.8.8

2020年4月12日日曜日

【組み込み関数】filterによる特定要素の取り出し

 リストやタプルといったイテラブルオブジェクトの要素から条件に合う要素のみを取り出す組み込み関数filterの使い方について説明する。



1. filter関数を使ったイテラブルオブジェクトからの特定要素の取り出し

 filterは下のようにfunctionとitertableを引数に取り、「itertableの内functionがtrueの要素を取り出す」機能がある。function部分はユーザー定義関数defもしくは無名関数lamdaを用いて記述する。

filter(function, iterable)


function部分を無名関数lamdaを用いて記述した場合。無名関数lamdaで偶数をtrueとしタプルaの内偶数のみを取り出す。filterはイテレータを生成するのみなのでtupleによりイテレータ→イテラブルオブジェクト(タプル)に変換している。

a = (1, 2, 3, 4, 5, 6)
b = tuple(filter(lambda x: x % 2 == 0, a))
print(b)

実行結果

(2, 4, 6)


function部分をユーザー定義関数defを用いて記述した場合。関数evenを定義し、filter内で呼び出している。上と同じ処理だが無名関数の方が簡潔に書ける。

def even(number):
    if number % 2 == 0:
        return True
    else:
        return False
    
a = (1, 2, 3, 4, 5, 6)
b = tuple(filter(even, a)
print(b)

実行結果

(2, 4, 6)


無名関数lamdaを使って文字列のリストから7文字未満の要素のみ取り出して新しいリストにする例

a = ['Japan', 'Unaited States', 'China', 'Australia']
b = list(filter(lambda x: len(x) < 7, a))
print(b)

実行結果

['Japan', 'China']


2. リファレンス

Python 標準ライブラリ > 組み込み関数 > filter(function, iterable)

使用バージョン:Python 3.7.0

【組み込み関数】bin,oct,hex(2進数、8進数、16進数)

 整数(10進数)を2進数の文字列に変換するbin、整数を8進数の文字列に変換するoct、整数を16進数の文字列に変換するhexについて解説する。

また、2進数・8進数・16進数を10進数に変換するintを解説する。


1. 10進数から2進数・8進数・16進数への変換

binは整数を先頭に '0b' が付いた2進数文字列に変換する。

print(bin(5))

実行結果

0b101


octは整数を先頭に '0o' が付いた8進数文字列に変換する。

print(oct(9))

実行結果

0o11


hexは整数を先頭に '0x' が付いた16進数文字列に変換する。

print(hex(20))

実行結果

0x14


2. 2進数・8進数・16進数から10進数への変換

 文字列や小数を整数に変換するintは第二引数として基数(2,8,16)を与えることで2進数・8進数・16進数を10進数に変換することが可能。

2進数から10進数への変換。

print(int('1100', 2))

実行結果

12


8進数から10進数への変換。

print(int('52', 8))

実行結果

42


16進数から10進数への変換。

print(int('FF', 16))

実行結果

255


3. リファレンス

Python 標準ライブラリ > 組み込み関数 > bin(x)
Python 標準ライブラリ > 組み込み関数 > oct(x)
Python 標準ライブラリ > 組み込み関数 > hex(x)
Python 標準ライブラリ > 組み込み関数 > int(x)

使用バージョン:Python 3.7.0

2020年3月29日日曜日

【組み込み関数】print

 画面(標準出力)に数値や文字、変数の値を表示するには組み込み関数のprintを用いる。



1. printの基本形

 printは引数に指定した値(数値、文字、変数)を標準出力(コンソールやjupyter notebook)に表示する。引数のsepは値が複数の場合の区切り文字の指定、endは一番最後に追加する文字の指定。


print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)


数値を出力する場合

print(45)

実行結果

45


文字列の場合

print('千客万来')

実行結果

千客万来


変数の場合

x = 45
y = '千客万来'
z = [12, 37, 'ネコ']
print(x)
print(y)
print(z)

実行結果

45
千客万来
[12, 37, 'ネコ']


 引数に計算式を与えた場合は計算結果が表示される。

print(15 + 89 / 4)

実行結果

37.25


 文字列を+演算子で結合すると結合された文字列が表示される。

print('バナメイ' + 'エビ')

実行結果

バナメイエビ


2. 引数sepによる区切り文字の指定

 printに複数の引数を指定するとスペース1つ分の空白で区切られて表示される。

print('バナメイ', 'エビ')

実行結果

バナメイ エビ

 区切り文字を設定するprintの引数sepのデフォルト値が' '(スペース)なため、sepを指定しないとスペースが適用される。
sep=''(文字無し)とすればスペース無しで表示される。

print('バナメイ', 'エビ', sep='')

実行結果

バナメイエビ


3. 引数endによる最後の文字の指定

 引数endは表示した値の後ろに追加される文字。デフォルトは'\n'(改行)となっており指定しない場合はそれが適用される。

print('バナメイ')
print('エビ')

実行結果

バナメイ
エビ


 改行無しにしたい場合はend=''(文字無し)とする。

print('バナメイ', end='')
print('エビ')

実行結果

バナメイエビ


4. 文字列と数字を組み合わせて出力する(,で区切る)

 引数を,(カンマ)で区切り、引数spa=''(文字無し)とすれば文字列と数値が繋がって表示される。

x = 100
print('バナメイエビ',x,'匹', sep='')

実行結果

バナメイエビ100匹


5. 文字列と数字を組み合わせて出力する(+演算子)

 1つの値として文字列と数字を+演算子で結合してprintに与えると型が一致しないためエラーとなる。

x = 100
print('バナメイエビ' + x + '匹')

実行結果

TypeError: can only concatenate str (not "int") to str


 組み込み関数strにより数値→文字列に変換することで+演算子で結合しprintで表示できる。

x = 100
print('バナメイエビ' + str(x) + '匹')

実行結果

バナメイエビ100匹


6. 文字列と数字を組み合わせて出力する(format)

 formatを使うと文字列中の{}部分をformatの引数を文字列にしたうえで置き換えることが可能。

x = 100
print('バナメイエビ{}匹'.format(x))

実行結果

バナメイエビ100匹


7. リファレンス

Python 標準ライブラリ > 組み込み関数 > print

使用バージョン:Python 3.7.0