目录
https://www.jianshu.com/p/35187942a96f
优雅的使用你的pycharm
—获取函数的帮助
按住ctrl
键,将鼠标箭头移动至函数名
上
—同时修改多处位置
按住alt
键,点击鼠标左键确定修改位置
输入要修改
或添加
的内容后
优雅你的赋值语句
—为多个变量赋值
一般方法
a = 1
b = 2
c = 3
优雅方法
a,b,c = 1,2,3
—序列解包
一般方法
l = ['peter',11,'man']
name = l[0]
age = l[1]
gender = l[2]
优雅方法
l = ['peter',11,'man']
name,age,gender = l
—对象方法的嵌套
一般方法
s = "$hello *world!"
s1 = s.replace('$','')
s2 = s1.replace('*','')
优雅方法
s = "$hello *world!"
s1 = s.replace('$','').replace('*','')
输出;
>>hello world!
优雅你的[判断语句]
—if…else…三目运算符的使用
一般方法
x = 1
if x > 0:
y = x
else:
y = -x
优雅方法
x=1
y = x if x > 0 else -x
—区间判断
一般方法
x = 85
if x >=80 and x <= 90:
print('良好')
优雅方法
x = 85
if 80 <= x <= 90:
print('良好')
输出;
>>良好
—判断是否为多个取值之一
一般方法
s='a'
if s == 'a' or s == 'b' or s == 'c':
print('yes!')
优雅方法
s = 'a'
if s in ('a','b','c'):
print('yes!')
输出;
>>yes!
—判断是否为空列表,空字典,空字符串
一般方法
s,l,d = '',[1,2,3],{}
if len(s)>0:
print("s is not empty!")
if len(l)>0:
print("l is not empty!")
if len(d)>0:
print("d is not empty!")
优雅方法
s,l,d = '',[1,2,3],{}
if s:
print("s is not empty!")
if l:
print("l is not empty!")
if d:
print("d is not empty!")
输出;
>>l is not empty!
—判断多个条件是否至少有一个成立
一般方法
t1,t2,t3 = 59,60,61
if t1 >= 60 or t2 >= 60 or t3 >= 60:
print('pass')
优雅方法
t1,t2,t3 = 59,60,61
if any([t1>=60,t2>=60,t3>=60]):
print('pass')
输出:
>>pass
—判断多个条件是否都成立
一般方法
t1,t2,t3 = 80,90,95
if t1 >= 60 and t2 >= 60 and t3 >= 60:
print('pass')
优雅方法
t1,t2,t3 = 80,90,95
if all([t1>=60,t2>=60,t3>=60]):
print('pass')
输出:
>>pass
优雅你的循环语句
—单行循环语句:推导式
一般方法
digit_l = []
l=[1,2,2,'abc',5.0]
for i in l:
if isinstance(i,(int,float)):
digit_l.append(i)
print(sum(digit_l))
优雅方法
l=[1,2,2,'abc',5.0]
print(sum([i for i in l if type(i) in (int,float)]))
输出:
>>10.0
—同时遍历序列的元素和元素下标
一般方法
seasons = ['spring','summer','autumn','winter']
for i in range(len(seasons)):
print(i,seasons[i])
优雅方法
seasons = ['spring','summer','autumn','winter']
for i,j in enumerate(seasons):
print(i,j)
输出:
>>0 spring
>>1 summer
>>2 autumn
>>3 winter
—显示循环进度
import time
i,n=0,100
for i in range(n):
time.sleep(0.1)
if (i+1)%10 == 0:
print(i+1)#直接不断print下标。该方法容易导致输出刷屏
import time
i,n=0,100
for i in range(n):
time.sleep(0.1)
if (i+1)%10 == 0:
print("\r{}".format(i+1),end='')#在一行中不断更新i+1的值
—"_"的妙用
for _ in range(5):
print('hello')
输出:
>>hello
>>hello
>>hello
>>hello
>>hello
优雅你的函数
—使用lambda匿名函数
一般方法
l = [1,2,2,'abc',5.0]
def isnumber(x):
return isinstance(x,(int,float))
print(sum(list(filter(isnumber,l))))
优雅方法
l = [1,2,2,'abc',5.0]
print(sum(list(filter(lambda x:isinstance(x,(int,float)),l))))
输出:
>>10.0
—使用yield生成器收集值
一般方法
def fibs(x):#输出斐波那契数列
result=[]
a,b,i=1,1,1
while i <= x:
result.append(a)
a,b = b,a+b
i += 1
return result
print(fibs(10))
优雅方法
def fibs(x):#输出斐波那契数列
a,b,i=1,1,1
while i<=x:
yield a
a,b=b,a+b
i+=1
print(list(fibs(10)))
输出:
>>[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
—使用装饰器
一般方法
import time
def run_time(*args):
number = 0
start = time.time()
for i in args:
number += i
end = time.time()
return end - start
print(run_time(*range(10000)))
优雅方法
import time
def run_time(func):
def wrapper(*args,**kwargs):
start = time.time()
result = func(*args,**kwargs)
end = time.time()
spend_time = end - start
print(spend_time)
return result
return wrapper
@run_time
def fun1(c):
i,number = 0,0
while i <c:
number += i
i += 1
return number
fun1(10000)
输出:
>>0.000997304916381836