Python中推导式和模块(13)

推导式

推导式:从一个数据序列构建另一个新的数据序列
推导式包括:
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
#时间戳:从19701100: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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值