推导式
推导式:从一个数据序列构建另一个新的数据序列
推导式包括:
1.列表推导式
2.字典推导式
3.集合推导式
列表推导式
#推导式
#求平方
a=[1,2,3,4,5,6]
b=[i*i for i in a]
print(b)
a=[1,2,3,4,5,6]
def qiupf(x):
return x*x
b=[qiupf(i) for i in a]
print(b)
#求奇数
a=[1,2,3,4,5,6]
b=[i for i in a if i%2==1]
print(b)
#求偶数且大于2的平方
a=[1,2,3,4,5,6]
b=[i**2 for i in a if i%2==0 if i>2]
print(b)
b=[i**2 for i in a if i%2==0 and i>2]
print(b)
#遍历列表,且按下图样子输出
a=[[1,2,3,5,6],[4,5,6],[7,8,9,9]]
i=0
while i<len(a):
j=0
while j<len(a[i]):
print(a[i][j],end=" ")
j+=1
print()
i += 1
'''
1 2 3 5 6
4 5 6
7 8 9 9
'''
#遍历两层列表
a=[[1,2,3],[4,5,6],[7,8,9]]
b=[i for j in a for i in j]
print(b)
"""
for j in a:
for i in j:
print(i)
"""
'''
[1, 2, 3, 4, 5, 6, 7, 8, 9]
'''
#注意找规律
a=[[1,2,3],[4,5,6],[7,8,9]]
b=[a[i][0] for i in range(len(a)) ]
print(b)#[1, 4, 7]
c=[a[i][i] for i in range(len(a))]
print(c)#[1, 5, 9]
d=[a[i][2-i] for i in range(len(a))]
print(d)#[3, 5, 7]
#创建一个两层的链表
for i in range(3):
for j in range(3):
x=i*3+1+j
print(x,end=" ")
print()
"""
1 2 3
4 5 6
7 8 9
"""
a=[[3*i+j+1 for j in range(3)]for i in range(3)]
print(a)#[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
字典推导式
#两个交换位置
a={"a":'b',1:2}
b={v:k for k,v in a.items()}
print(b)#{'b': 'a', 2: 1}
a={k:v for k,v in zip("abc","123")}
print(a)#{'a': '1', 'b': '2', 'c': '3'}
#
a={"a":1,"A":3,'b':4,'b':9,'c':10}
print(a.get('c',9))#10 如果存在返回里面的值,不存在,返回默认给它的值
print(a.get("C",5))#5
#
a={"a":1,"A":3,'b':4,'B':9,'c':10,'d':99}
x=['a','A',"B","b","c"]
b={k.lower():a.get(k.lower(),0)+a.get(k.upper(),0)for k in a.keys() if k in x}
print(b)#{'a': 4, 'b': 13, 'c': 10}重复的添加就相同了,只有一个
a=[1,2,3,4]
#下面是一个生成器
b=(i*i for i in a)
print(b)#<generator object <genexpr> at 0x00000000021290F8>
for x in b:
print(x)
"""
1
4
9
16
"""
集合推导式
a=[1,2,3,4,1,2,3,4]
b={i*i for i in a}#集合去重
print(b)
#这是一个列表,计算列表里每个值的平方,并去重
b={x**2 for x in [1,-1,2]}#[1,-1,2]
print(b)
data=range(3)
funcs=[lambda x:i*x for i in data]
for func in funcs:
print(func(2))
'''
4
4
4
'''
data=range(3)
funcs=[lambda x,i=i:i*x for i in data]
for func in funcs:
print(func(2))
'''
0
2
4
'''
模块
1.每一个以扩展名.py结尾的Python源代码文件都是一个模块
2.在模块中定义的全局变量、函数都可以给外界直接使用
模块导入方式:
1.import语句
导入say_hi模块:
import say_hi
引入多个模块:
import qh,qj一行导入
调用方法:“模块名.方法名”的格式调用模块里的方法
2.from…import… 语句
from…import…语句可以导入某一个模块的指定函数
调用方法:引入的方法直接引用,不用加模块名
3.from say_hi import * import say_hi
引入say_hi模块的所有函数
#在其他文件夹下调用其他文件的
import sys
print(sys.path)
#用其他文件下的模块
sys.path.append("E:\\pywork\\day01")
print(sys.path)
import shuaige
print(shuaige.qiuhe(1,2))
sys.path返回的的数据类型是列表
sys.path.append(“E:\pywork\day01”)导入额外目录的模块
常用模块
#常用模块
import random
#产生大于0且小于1之间的小数
print(random.random())
#范围内随机小数
print(random.uniform(2,3))
#产生范围内整数,包括开头和结尾
print(random.randint(1,100))
a=[random.randint(1,10) for i in range(10)]
print(a)
#1-13 不等于13的奇数
a=random.randrange(1,13,2)
print(a)
a=[random.randrange(1,10,3)for i in range(10)]
print(a)
#随机选择一个数据
a=[10,20,30,40]
b=random.choice(a)
print(b)
#shuffle()打乱列表顺序
a=[10,20,30,40]
random.shuffle(a)
print(a)
d=chr(random.randint(65,90))
print(d)
练习:验证码
import random
def v_code():
code=''
for i in range(0,4):
num=random.randint(0,9)
xiaoxie=chr(random.randint(67,90))
daxie=chr(random.randint(97,122))
c=random.choice([num,xiaoxie,daxie])
code=code+str(c)
return code
print(v_code())
sys模块
# sys模块
import sys
print(sys.version) # 返回解释器的版本号
# ret=sys.argv#在这接收
# print(ret)
print("参数名称", sys.argv) # 接收命令行下的参数
path = sys.argv[0]
name = sys.argv[1]
pwd = sys.argv[2]
if name == 'zs' and pwd == '123':
print("登录成功")
else:
print("失败")
运行结果:
time模块
import time
#时间戳:从1970年1月1日00:00:00开始到现在的秒值。返回的是float类型
print(time.time())
time.sleep(3)#睡眠功能,让程序等待多少秒后执行
print(time.time())
#
#将时间戳转换成时间元组
ret=time.localtime()
print(ret)
ret=time.localtime(time.time()-3600)#3600是一个小时
print(ret)
#时间字符串格式化
s=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
print(s,type(s))#2019-07-25 21:32:05 <class 'str'>
print(s)
s=time.strftime("%Y/%m/%d %H:%M:%S",time.localtime())
print(s,type(s))
#时间元组转换为字符串
s=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
#将字符串转换为时间元组
t=time.strptime(s,"%Y-%m-%d %H:%M:%S")
print(t)
#时间元组转换为时间戳
x=time.mktime(t)
print(x)
#时间戳转换为时间元组
s=time.gmtime()
print(s)
#不传参数,直接返回当前时间的格式化串
print(time.asctime())
# t=time.time()
# print(t)#时间戳
# s=time.localtime()
# print(s)#时间元组
# f=time.strftime("%Y-%m-%d %H:%M:%S",s)
# print(f)
# p=time.strptime(f,"%Y-%m-%d %H:%M:%S")
# print(p)
# t=time.mktime(p)#结构化时间
# print(t)