8个Python小Tips
行走在Python的江湖,那能不收藏一些锦囊妙计,今天分享给大家8个小技巧,希望在实战的时候有帮助!
01.
条件判断
condition=True
if condition:
x=1
else:
x=2
print (x)
改成
x=1 if condition else 2
print (x)
02.
大数字分割
如果几个非常大的数字比如相加的时候,一个数字后面很多零点时候,我们很难去点这个0,比如:
num1=10000000000
num2=100000000
print (num1+num2)
上面的几个大数字,很多零,点的眼都花了!怎么办呢,Python里面有一个奇淫技巧,可以加下划线分割:
num1=10_000_000_000
num2=100_000_000
total=num1+num2
print (f'{total:,}')
>>10,100,000,000
03.
文件的关闭
f=open('log.txt','r')
file_contents=f.read()
f.close()
words=file_contents.split(' ')
word_count=len(words)
print (word_count)
用with来处理更简便
with open('log.txt','r') as f:
file_contents=f.read()
words=file_contents.split(' ')
word_count=len(words)
print (word_count)
04.
优雅的用下标
names=['Corey','Chris','Dave','Apple']
index=0
for name in names:
print (index,name)
index+=1
使用enumerate来计算下标
names=['Corey','Chris','Dave','Apple']
for index,name in enumerate(names):
print (index,name)
05.
遍历多个序列
names=['Leo','Lili','Sam','Tom']
ages=[30,20,28,25]
for index,name in enumerate(names):
age=ages[index]
print (f'{name} is {age} old')
太麻烦了,用zip更方便
for name ,age in zip(names,ages):
print (f'{name} is {age} old')
有的同学说如果我有3个序列呢,怎么办,一样可以操作
names=['Leo','Lili','Sam','Tom']
ages=[30,20,28,25]
habits=['Movies','Dance','Reading','Singing']
for name ,age,habit in zip(names,ages,habits):
print (f'{name} is {age} old and like {habit}')
06.
巧妙的使用单下划线
我们在一个序列的时候,有的时候,只想取头和尾,巧妙的用单下划线
a,_,b=(1,2,3)
print (a)
print (b)
>>
1
3
但是如果有一个很长的序列的时候,我们想取头和尾怎么办呢,传统的做法是:
nums=(1,2,3,4,5,6,7,8,9)
head=nums[0]
tail=nums[-1]
print (head)
print (tail)
如果能巧妙的利用unpack方法,就会很简便:
nums=(1,2,3,4,5,6,7,8,9)
head,*_,tail=nums
print (head)
print (tail)
07.
类的属性封装
class Person():
pass
person=Person()
如果你有一个字典需要来初始化这个类
person_info={'first':'leo','last':'sam'}
你希望最后能print (person.first),怎么办?有没有什么巧妙的方法处理?
用setattr函数
for k,v in person_info.items():
setattr(person,k,v)
还有getattr(),可以方便的获取类的属性
for k in person_info.keys():
print (getattr(person,k))
08.
输入加密的密码
username=input('Username: ')
passwd=input('Passwd:')
print ('Logging In...')
>>
Username: user
Passwd:admin
Logging In...
密码是显示出来的,这样肯定不太好,有没有其他优雅的方法的,用Python自带的函数getpass
from getpass import getpass
username=input('Username: ')
passwd=getpass('Passwd:')
print ('Logging In...')
>>
Username: aa
Passwd:
Logging In...
这里passwd后面会显示一个钥匙的图片
最后送一个,批量修改列表重复的元素
a = [1,2,4,1,1]
for i in range(a.count(1)):
ax =a.index(1)
q='fdsf'
a[ax]=q
print(a)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2018-04-11 天兔(Lepus 3.8)数据库监控系统部署
2018-04-11 Xargs用法详解
2018-04-11 删除除了指定扩展名文件其他全部删除
2018-04-11 LINUX的文件按时间排序