0
点赞
收藏
分享

微信扫一扫

Python常用技巧

001 两数交换

# 两数交换
a = 2
b = 3
a,b = b,a
print ("a=%d b=%d"%(a,b)) # a=3 b=2

002 eval函数

# eval函数
exp = '2**2+5'
eval(exp) # 9

运算符

描述

​+​

对象相加

​-​

对象相减 或 得到负数

​*​

两数相乘 或 返回重复若干次的字符串

​/​

除法

​%​

取余

​**​

返回x的y次幂(​​x**y​​ = x的y次幂)

​//​

取整除法(向下取接近除数的整数) 例如:​​9//2 = 4​​​、​​-9//2=-5​

  • 数值的除法包含两个运算符:​​/​​ 返回一个浮点数,​​//​​ 返回一个整数。
  • 在混合计算时,Python会把整型转换成为浮点数。

003 yeild的使用

目标:输出0~10的斐波那契数列

一、这是普通做法,先生成斐波那契数列的列表,后遍历输出

def fibonacci(n):
a = 0
b = 1
nums = []
for _ in range(n):
nums.append(a)
a,b = b,a
return nums

for i in fibonacci(10):
print(i)

二、使用 ​​yeild​​ 进行输出

  1. ​yeild​​ 是做好一个输出一个
  2. 其输出完毕会继续执行函数
  3. 对一些非常耗时的操作:如下载文档并输出内容,可以边下载边输出,而不是下载完后再输出

def fibonacci(n):
a=0
b=1
for _ in range(n):
yield a
a,b = b,a+b

for i in fibonacci(10):
print(i)

004 列表解析式

# 使用列表解析式获取(做出更改的)新的列表

fruit = ['apple','banana','orange','pear']
# 把这些名字都改成大写
# 1.普通方法
for i in range(len(fruit)):
fruit[i]=fruit[i].upper()

# 2.list表达式
fruit = [x.upper() for x in fruit]
# 这个写法其实是构造了一个新的List,并将其赋值给了fruit变量

# 使用列表解析式筛选想要的元素
fruit = ['apple','banana','orange','pear']

# 筛选出以'a'开头的单词
# 1.普通写法
fruit_a1 = []
for i in fruit:
if i.startswith('a'):
fruit.append(a)

# 2.list表达式
fruit_a2 = [x for x in fruit if x.startswith('a')]
# 可以分解成这样理解
# x(新的列表由x构成)
# x in fruit(x来自fruit列表)
# if x.startswith('a')(x需要满足if语句中的条件)

005 enumerate函数

  1. 用于遍历
  2. 每一次循环都会提供两个参数:一个元素内容、一个元素的索引值

fruit = ['apple','banana','orange','pear']

# 输出元素的内容 和 索引值
for i,x in enumerate(fruit):
print(i,x)

# 反向遍历

fruit = ['apple','banana','orange','pear']

for i,x in enumerate(reversed(fruit)):
print(i,x)

# 按字典序排序

fruit = ['apple','pear','orange','banana']

for i,x in enumerate(sorted(fruit)):
print(i,x)

006 解包运算符

目的:合并两个字典
一、先展示一波普通的写法,依次遍历两个字典,将其值赋予一个新的字典

a = {"root":"123","ming":"3w.com"}
b = {"lilei":"1111","zhangsan":"123456"}

# 1.普通写法
c = {}
for i in a:
c[i]=a[i]

for i in b:
c[i]=b[i]

for k ,v in c.items():
print(k,v)

二、使用解包符号,将字典拆包,然后使用数据构建一个新的字典

a = {"root":"123","ming":"3w.com"}
b = {"lilei":"1111","zhangsan":"123456"}

# 2.使用解包符号
c ={**a,**b}
# 相当于是将a和b中的内容直接填写到这里

for k,v in c.items():
print(k,v)

007 Python中的三元运算符

目的:输入一个成绩(整数),判断其是否及格

一、使用​​if-else​​结构

score = input("input score:")
if score > 60:
s = "pass"
else:
s = "fail"

二、使用Python中的”三元运算符“

score = input("input score:")

# 可以直接简化为三元运算符
s = "pass" if score > 60 else "fail"
# if为真就使用前面的,为假就使用后面的

008 序列解包

list、tuple、range等数据序列,可以直接使用序列解包的方式,获取其数据值

# list序列解包
a = [1, 2, 3]
b, c, d = a
print(b,c,d) # 1 2 3

# 除了list之外,tuple、range等都可以序列解包
x, y, z = range(3)
print(x,y,z) # 0 1 2


s = {'a':1, 'b':2, 'c':3}

# 对字典使用时,默认是对字典“键”进行操作
# k1,k2,k3 = s.keys()
k1,k2,k3 = s
print(k1,k2,k3) # a b c

# 如果需要对“键:值”对进行操作,需要使用字典的items()方法说明
i1,i2,i3 = s.items()
print(i1,i2,i3) # ('a', 1) ('b', 2) ('c', 3)

# 如果需要对字典“值”进行操作,则需要使用字典的values()方法明确指定
v1,v2,v3 = s.values()
print(v1,v2,v3) # 1 2 3

举报

相关推荐

0 条评论