文章目录
三元表达式
其他语言的三元表达式
result = 判定条件? 为真时的结果:为假时的结果
result = 5>3? 1:0 # 条件为真是result赋值为1,条件为假时赋值为0
Python中的三元表达式
result = 为真时的结果 if 判断条件 else 为假时的结果
result = x if x > y else y # 如果条件成立,将x的值赋给result
变种
cond = True
name = ["Cat", "Tom"][bool(cond)]
#'Tom'
生成器
可迭代的对象:生成器、元组、列表、集合、字典、字符串
可以被next()函数调用,不断返回下一个值得对象称为迭代器:Iterator。
通过iter()函数将可迭代的变成一个迭代器
yield关键字
只要函数中出现了yield关键字,说明函数就不是函数了,是一个生成器,借助于next()获得元素
def f():
i = 0
while True:
i+=1
n = i*3
yield n
g = f()
print(g)# generator
print(next(g))# 3
通过列表推导式得到生成器
通过使用g.next()方式得到元素,或者使用next(g)得到元素,每调用一次则会产生一个元素。
若生成器产生的元素用完,继续调用则会抛出异常StopIteration
利用try…except的方式解决异常
g = (x*3 for x in range(10))
while True:
try:
e = next(g)
print(e)
except:
print('没有更过元素了')
break
数据类型相互转换
从 float 到 int 的转换,值将会被截断(使其接近零)
python更改默认递归深度
Python递归深度默认最大900多
def fib(n):
if n == 1:
return 1
else:
return n*fib(n-1)
print(fib(1000))#就会报错
import sys
sys.setrecursionlimit(1000000) #例如这里设置为一百万
ascii转换
- ord(‘哈’) #21704
- chr(21704) #哈
- ord(‘a’) #97
- chr(97) #a
哈希表创建及使用
nums = [1,3,5,3,6]
#将nums中的值与其对应的下标存储在哈希表中方便寻找其在nums中是否存在
# 如果存在则输出其下标
mp = list()
#初始化哈希表
for i,num in enumerate(nums):
mp[num] = i
将二维数组以矩阵形式输出
使用import numpy as np
import numpy as np
list = [[1,2,3],[1,2,3],[1,2,3]]
print(np.array(list))
输出结果:
[[1 2 3]
[1 2 3]
[1 2 3]]