優雅なpythonコード
23721 ワード
プログラマーとして、平凡から優雅に書かなければならない.
本明細書では、2つのブレークコードごとに1つのモジュールを理解します. pythonにおける多変数付与について:
優雅になる:元祖文法を使うシーケンスのパケット解除:
優雅になる:シーケンスの自動解包仲介変数を減らし、少ないネスト 三目演算if...else...
優雅になる:区間判定
優雅にチェーン判断複数の値のうちの1つであるか否かを判断する .
キーワードinの使用空リスト、空辞書、空文字列 であるか否かを判断する.
優雅になる:隠しタイプ変換直接判断多くの条件が少なくとも1つ成立しているかどうか
優雅にany関数を使う多くの条件がすべて成立するかどうか
優雅にany関数を使う導出式
エレガントに導くシーケンスの要素と要素の両方を同時に巡回する
優雅にenumerate関数を使用して下付きと要素ペアを生成循環進捗 を表示する.
ここでは、1秒ごとに1行の結果を印刷します.
本明細書では、2つのブレークコードごとに1つのモジュールを理解します.
a = 0
b = 1
c = 2
優雅になる:元祖文法を使う
a, b, c = 0, 1, 2
colors = ['red', 'black', 'yellew', 100]
red = colors[0]
black = colors[1]
yellew = colors[2]
num = colors[3]
優雅になる:シーケンスの自動解包
red, black, yellew, num = ['red', 'black', 'yellew', 100]
name = 'Hello, World!!'
a = name.replace.(',','')
b = a.replace.('!!','')
print(b)
name = 'Hello, World!!'
b = name.replace.(',','').replace.('!!','')
print(b)
a = 100
if a>=0:
b = a
else:
b = -a
print(b)
優雅になる:
a = 100
b= a if a>=0 else -100
score = 100
if score >= 50 and score < 60
print(' ')
優雅にチェーン判断
score = 100
if 50 <= score < 60:
print(' ')
if num in == 1 or num == 'd' or num == '2':
print(num)
キーワードinの使用
if num in (1,'d','2'):
print(num)
i,y,z = [1,2,3], {
}, ''
if len(i)>0:
print('...')
if len(y)>0:
print('...')
if len(z)>0:
print('...')
優雅になる:隠しタイプ変換直接判断
i,y,z = [1,2,3], {
}, ''
if i:
pass
if y:
pass
if z:
pass
book, card, num = 10, 20, 30
if book < 30 or card <30 or num < 30:
printy('...')
優雅にany関数を使う
book, card, num = 10, 20, 30
if any([ book<30, card<30, num <30 ]):
pass
book, card, num = 10, 20, 25
if book < 30 or card <30 or num < 30:
printy('...')
優雅にany関数を使う
book, card, num = 10, 20, 30
if all([ book<30, card<30, num <30 ]):
pass
## a
a = [1,2,3,'dadada',4,5]
list = []
for i in a:
if isinstance(i,(int,float)):
list.append(i)
sum(list)
エレガントに導く
a = [1,2,3,'dadada',4,5]
sum([i for i in a if type(i) in [int,float]])
colors = ['red', 'black', 'yellew', 100]
for i in range(len(colors )):
print(i:':',colors[i] )
優雅にenumerate関数を使用して下付きと要素ペアを生成
colors = ['red', 'black', 'yellew', 100]
for i,s in enumerate(colors):
print(i,':',s)
ここでは、1秒ごとに1行の結果を印刷します.
import time
for i in range(100):
times.sleep(0.1)
print(i)
import time
for i in range(100):
times.sleep(0.1)
print(i, end='\r')
def process_bar(num, total):
rate = float(num)/total
ratenum = int(100*rate)
r = '\r[{} {}]{}%'.format('*'*ratenum, ' '*(100-ratenum), ratenum)
sys.stdout.write(r)
sys.stdout.flush()
i,n = 0,100
for i in range(n):
time.sleep(0.1)
process_bar(i+1,n)