推导式
#列表推导式
a=[i for i in range(11) if i%2==0]
print(a)
def pingfang(a):
return a*a
b=[pingfang(i) for i in range(5) if i%2==0]
print(b)
b=[i*i for i in range(5) if i%2==0]
print(b)
a=[[1,2,3],[4,5,6],[7,8,9]]
b=[a[i][2-i] for i in range(len(a))]
print(b)
b=[a[i][j] for i in range(len(a)) for j in range(len(a[i]))]
print(b)
#字典推导式
a={1:2,3:4,5:6}
b={v:k for k,v in a.items()}
print(b)#{2: 1, 4: 3, 6: 5}
a={"a":1,"A":2,"b":3,"B":4,"c":5}
b={"a","b","c"}
c={k.lower():a.get(k.lower(),0)+a.get(k.upper(),0) for k in a.keys() if k in b}
print(c) #{'a': 3, 'b': 7, 'c': 5}
#集合推导式
a=[1,2,3,1,2,3]
b={i*i for i in a}
print(b) #{1, 4, 9} 集合的唯一性
模块
1、在文件夹a中定义一个函数x(),在b文件夹中调用
import a
b.x()
print(b.x())
#
from a import x()
print x()
2、导入多个模块
假设在另一个文件夹 c 中定义函数 y()
要求同时将a,c中的函数调用
import a
import c
b.x()
print(b.x())
c.y()
3、as
利用上面定义的C文件夹的函数y()举例
import c as t#as就是将文件名替换一个方便的名字
t.y()
from c import y as i #这里是将函数名或者方法名替换成方便的名字
i()
3、引用
当一个文件中定义了多个函数,我们只需要一条时,可以用下面的方法
from 文件名 import 所需要的函数
如果需要调用全部的话用,举例如下*
from 文件名 import*
注意的是*对于下划线开头的函数或方法的话是无效的
__all__用来暴露接口,提供哪些是公开接口的约定
在一个文件中定义好多个函数,要求有些不能用,但已经写成了
from xxx import*,这时就可以用__all__规定可以调用的白名单
#系统相关信息模块 import sys
import sys
print(sys.path)#查看路径
sys.path.append("4028")#跨包调用
import qwer
#跨包调用
import sys
sys.path.append("d:\\pywork\\a") #临时添加路径
import a.a1.a11.heh
a.a1.a11.heh.hanshu()
#查看系统版本及其他操作
import sys
print(sys.version)
print(sys.argv)
name=sys.argv[1]
pwd=sys.argv[2]
if name =="admin" and pwd=="123456":
print("登录成功")
else:
print("用户名密码错误,请重试")
假设定义一个包名为A 它下面的文件名A1,A1下面文件名A11,里面定义函数在另一个包中的文件下调用
from A.A1.A11 import*
print()
hanshu()
#random
import random
a=random.random(0,1) #随机选取0-1之间的随机数
print(a)
import random
b=random.randint(1,20)#随机选取1-20 之间的数
print(b)
#uniform 随机抽取指定范围的小数
import random
a=random.uniform(2.3,5.6)
print(a)
#randrange(x,y,z)x代表初始值,y代表结束值,z代表步长
import random
a=random.randrange(1,22,3)
print(a)
#choice随机选 shuffle随机洗牌
import random
a=[10,20,30,40]
b=random.choice(a)
print(b)
random.shuffle(a)
print(a)
#join
a="123"
b="-".join(a)
print(b)#1-2-3
#随机验证码
import random
def dev_code():
code=""
for i in range(4):
a=random.randint(1,9)
b=chr(random.randint(65,90))
add=random.choice([a,b])
code="".join([code,str(add)])
return code
x=dev_code()
print(x)
时间
#sleep 休眠
import time
print("1")
time.sleep(1)
print("2")
#时间戳
import time
print(time.time())
#时间元组
import time
print(time.localtime())
#将时间元组返回时间戳
import time
a=time.localtime()
b=time.mktime(a)
print(b)
#时间格式化字符串
import time
a=time.strftime("%Y-%m-%d %H:%M:%S".format(time.localtime()))
print(a)
#字符串转元组
import time
a="2019-04-30 16:58:29"
b=time.strptime(a,"%Y-%m-%d %H:%M:%S")
print(b)
#asctime ctime
import time
print(time.asctime(),type(time.asctime()))
print(time.ctime(),type(time.ctime()))
#结果:Tue Apr 30 20:42:00 2019 <class 'str'>
#Tue Apr 30 20:42:00 2019 <class 'str'>
#银行卡解冻
#2019-4-29 17:07:00冻结
#冻结7天,现在已过时间,求还有多少天解冻
import time
#总时间7天转换成秒
all_time=7*24*60*60
#冻结的时间
dongjie="2019-4-29 17:07:00"
dongjie2=time.strptime(dongjie,"%Y-%m-%d %H:%M:%S")
dongjie3=time.mktime(dongjie2)
#当前时间
now_time=time.time()
#已过时间
yg_time=now_time-dongjie3
#剩余时间
sysj=all_time-yg_time
day=sysj//(24*60*60)
hour=sysj%(24*3600)//(60*60)
minute=sysj%(60*60)//60
second=sysj%60
print(day,"天",hour,"小时",minute,"分钟",second,"秒")
day8作业
# 1.创建一个函数,输入一个大于1的整数,返回一个列表,
# 包含所有能够整除该整数的因子(不包含1和它本身),并且从小到大排序。
# 如果这个数是素数,则返回“(integer) is prime”。
def hanshu(num):
a=[i for i in range(2,num) if num%i==0]
return a if a else "%i is prime"%num
print(hanshu(12))#[2, 3, 4, 6]
print(hanshu(3))#3 is prime
# 2.使用列表推导式将一个二维列表转换成一个一维列表。
# lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 转换成:lst2=[1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用列表推导式
lst=[[1,2,3],[4,5,6],[7,8,9]]
b=[lst[i][j] for i in range(len(lst)) for j in range(len(lst[i]))]
print(b)
# 3.现在有一列表lst = [[1,2,3],[4,5,6],[7,8,9]]
# 要求使用列表推导式取出 1、4、7 和 1、5、9 元素,思考如何取出
lst = [[1,2,3],[4,5,6],[7,8,9]]
#取出1,3,7
lst1=[lst[i][0] for i in range(len(lst))]
print(lst1)
#取出1,5,9
lst2=[lst[i][i] for i in range(len(lst))]
print(lst2)