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)
8个Python小Tips的更多相关文章
- Python codecs小Tips
Python codecs小Tips 用codecs.open读进来的字符串都是unicode表示的.
- keras搭建深度学习模型的一些小tips
定义模型两种方法: 1.sequential 类仅用于层的线性堆叠,这是目前最常用的网络架构 2.函数式API,用于层组成的有向无环图,让你可以构建任意形式的架构 from keras import ...
- HTML meta锚点跳转 小tips
小tips meta锚点跳转 http://www.zhangxinxu.com/wordpress/2015/03/meta-http-equiv-refresh-content/
- Python小工具--删除svn文件
有的时候我们需要删除项目下的svn相关文件,但是SVN会在所有的目录下都创建隐藏文件.svn,手工一个个目录查找然后删除显然比较麻烦.所以这里提供了一个Python小工具用于批量删除svn的相关文件: ...
- python小练习(自己瞎倒腾)
python小练习 在网上无意中看到一个问题,心血来潮写了写,觉得比较有意思,以后遇到这种有意思的小练习也记录下. #!/usr/bin/env python # -*- coding:utf-8 - ...
- python小练习之二
title: python小练习之二 tags: 新建,模板,小书匠 grammar_cjkRuby: true --- python小练习之二 需求:实现用户登录,用户名和密码保存到文件里,连续输入 ...
- Python小代码_2_格式化输出
Python小代码_2_格式化输出 name = input("name:") age = input("age:") job = input("jo ...
- Python小代码_1_九九乘法表
Python小代码_1_九九乘法表 max_num = 9 row = 1 while row <= max_num: col = 1 while col <= row: print(st ...
- Windows7驱动调试小Tips
v:* { } o:* { } w:* { } .shape { }p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-botto ...
随机推荐
- js中的异常处理
js中的异常处理语句有两个,一个是try……catch……,一个是throw. try……catch用于语法错误,错误有name和message两个属性.throw用于逻辑错误. 对于逻辑错误,js是 ...
- Jenkins+PowerShell持续集成环境搭建(七)构建触发器
Jenkins 有三种类型的构建触发器,如下图: Build after other projects are built:在其他项目构建后构建: Build periodically:定时构建: P ...
- MongoDB学习目录
前面的话 为了能够使用NodeJS实现后端,MongoDB——这个NodeJS标配的数据库就不得不学.小火柴将MongoDB数据库的学习记录整理如下 基础 基础操作 数据类型 文档操作 索引 索引构建 ...
- THEPYTHONCHALLENG闯关记录
由于是自己看视频学python,总觉得不写几行代码就什么都没有学到. 找了一个写代码的网站其实只是因为这个看起来好玩. 闯关地址http://www.pythonchallenge.com/index ...
- P1387 最大正方形 dp
思路: i j的最大正方形等于min(他的斜上方的的最大正方形,他的上方有的连续1,他的左方有的连续1)+1 #include<bits/stdc++.h> using namespac ...
- ☆ [NOIp2016] 天天爱跑步 「树上差分」
题目类型:LCA+思维 传送门:>Here< 题意:给出一棵树,有\(M\)个人在这棵树上跑步.每个人都从自己的起点\(s[i]\)跑到终点\(t[i]\),跑过一条边的时间为1秒.现在每 ...
- 【UOJ349】【WC2018】即时战略 LCT 动态点分治
这是一道交互题 题目大意 有一棵\(n\)个点的树.最开始\(1\)号点是白的,其他点是黑的. 每次你可以执行一个操作:\(explore(x,y)\).要求\(x\)是一个白点.该函数会返回从\(x ...
- 七牛云 qshell 使用
七牛云 qshell 控制台工具上传 命令:qshell fput another1 demo.txt /users/tianyang/demo.txt ======================= ...
- 【NOI2002】
A 银河英雄传说 带权并查集 B 贪吃的九头龙 树形dp f[x][j][0] = min(f[x][j][0], min(f[vv][t][0] + tmp[j - t][0] + ww * (m ...
- 【CF833D】Red-Black Cobweb(点分治)
[CF833D]Red-Black Cobweb(点分治) 题面 CF 有一棵树,每条边有一个颜色(黑白)和一个权值,定义一条路径是好的,当且仅当这条路径上所有边的黑白颜色个数a,b满足2min(a, ...