Day2:模块、类型、三元运算、列表、元组、字典、

一、模块初识

1、标准模块(库):不需要安装直接可以导入,一般放在/Lib/文件夹下

(1)sys

#Author:licy
import sys
print(sys.path)#打印环境变量
print(sys.argv)#打印当前文件的相对路径

(2)os

#Author:licy
import os
cmd_res=os.system("dir")#乱码不要紧,直接输出到屏幕,执行命令,不保存结果
print("-----",cmd_res)#0 返回执行结果0-成功,非0-失败

cmd_res=os.popen("dir").read()#执行命令,保存结果
print("*****",cmd_res)

os.mkdir("new_dir")#创建目录
View Code

2、第三方(库):必须下载安装才可以使用,Django是一个第三方的库,必须下载安装,一般都放在/Lib/site-packages文件夹下

(1)自己写一个简单模块

新建login.py  此文件可以保存在和test.py的同级目录下,或者直接放大/Lib/site-packages文件夹下

#Author:licy
username=input("请输入用户名:")

test.py直接引入,然后直接执行

#Author:licy
import login  #先从当前目录中导入,如果不在就到全局变量中寻找 

注:/Lib/site-packages/__pycache__/文件夹下的.pyc的文件是:

其实PyCodeObject则是python编译器真正变异成的结果,我们先简单知道就可以了,当python程序运行时,
编辑的结果则是保存在位于内存中的PyCodeObject中,当python程序结束时,python解释器则将PyCodeObject写回到.pyc文件中,
当python二次运行时,首先程序会在硬盘中寻找.pyc文件,
如果找到,则直接载入,否则就重复上面的过程,所以我们说.pyc文件其实就是PyCodeObject的一种持久保存的方式

二、字符类型

(1)int(整型)

(2)float(浮点型)

(3)布尔型(true/false)

(4)bytes类型:音频、视频

#Author:licy
#将字符串转换为一个bytes类型
msg="我爱北京天安门"
print(msg.encode())#py3中如果没有指定编码,默认是utf-8
print(msg.encode().decode())
View Code

三、三元运算

#Author:licy
a,b,c=1,3,5
d=a if a>b else c
print(d)

四、列表

1、

#Author:licy
names=['zhangsan','lisi','wangwu','zhaoliu','licy']
print(names[0],names[2])#根据下标取值
print(names[1:3])#切片 顾头不够尾  lisi wangwu
print(names[-1])#取最后一个值,未知长度
print(names[-2:])#取最后两个值,省略第二个值
print(names[0:3])#相当于names[:3]
print(names[:3])
#列表中增加值
names.append("maqi")
print(names)
#将sunba插入到lisi前
names.insert(1,"sunba")
print(names)
#将lisi改为licy
names[2]='licy'
print(names)
#将wangwu删除
#names.remove('wangwu')
#del names[3]
names.pop(3)
print(names)
#从列表中找出licy
print(names.index('licy'))
#统计有几个licy这个人
print(names.count('licy'))
#names.clear()#清空
names.reverse()#反转
print(names)
names.sort()#排序 根据Ascii进行排序
print(names)
names2=[1,2,3,4]
names.extend(names2)#合并列表
print(names)
del names2 #删除names2
View Code

2、深浅copy

#Author:licy
import copy
names=['zhangsan','lisi','wangwu',['jack','tom'],'zhaoliu','licy']
#names2=names.copy()#复制列表 浅copy,只复制第一层的内容,如果还有下一层,它就把下一层的内存地址复制了
#print(names2)
names2=copy.deepcopy(names)#深copy
names[5]="李春雨"
print(names)
print(names2)
names[3][0]="宅科"
print(names)
print(names2)
View Code

3、循环列表和步长切片

#Author:licy
names=['zhangsan','lisi','wangwu',['jack','tom'],'zhaoliu','licy']
#range(1,10,2)
for i in names:#列表循环
    print(i)
print(names[0:-1:2])#相当于names[::2]步长切片
View Code

 4、补充内容

(1)sys模块:是python解释器自带的,c语言写的,集成在内部,所以找不到

(2)

#Author:licy
import copy
person=['name',['saving',100]]
#浅copy的如下三种方式
'''
p1=copy.copy(person)
p2=person[:]
p3=list(person)
'''
#浅copy用处:copy出两个人,夫妻关系,有一张共同的卡,用来创建联合账号
p1=person[:]
p2=person[:]
p1[0]='licy'
p2[0]='xiaomao'

p1[1][1]=50

print(p1)
print(p2)
View Code

五、元组(tuple)

#Author:licy
#只能查不能改,又叫不可变列表
names=('licy','tom')

六、字符串操作

#Author:licy
name="my name is\t{name}"
print(name.capitalize())#首字母大写
print(name.count("l"))#统计字母个数
print(name.center(50,"-"))
print(name.endswith("ve"))#判断字符串以什么结尾
print(name.expandtabs(tabsize=30))
print(name.find('name'))#查找字符串的索引
print(name.format(name="licy"))
print(name.format_map({'name':'licy'}))
print('ab23'.isalnum())
print('abA'.isalpha())
print('1A'.isdecimal())
print('1A'.isdigit())
print('-1A'.isidentifier())#判断是不是一个合法的标识符(变量)
print('33.33'.isnumeric())
print("My Name Is".istitle())
print("My Name Is".isprintable())
print("My Name Is".isupper())
print('+'.join(['1','2','3','4']))
print(name.ljust(50,'*'))
print(name.rjust(50,'*'))
print('Licy'.lower())#变小写
print('licy'.upper())#变大写
print('\nlicy'.lstrip())#默认去掉左边的空格或者回程车
print('licy\n'.rstrip())
print('  licy\n'.strip())
p=str.maketrans("abcdef","123456")
print("licy is a boy".translate(p))
print('llicy'.replace('l','L',1))#替换
print('licyy'.rfind('y'))
print('1+2+3+4'.split('+'))
print('1+2\n3+4'.splitlines())
View Code

七、字典

1、

#Author:licy
info={
    'stu1101':"licy",
    'stu1102':"zhangsan",
    'stu1103':"zhaoliu",
}
print(info)#字典是无序的,没有下标
print(info['stu1101'])#查找
info['stu1101']="李春雨"#修改
print(info)
info['stu1104']="李小龙"#增加
print(info)
#del info["stu1101"]#删除
#info.pop('stu1102')#删除
#info.popitem()#随便删一个
#print(info['stu1105'])#没有,报错
print(info.get('stu1105'))#查找没有,就返回None
print('stu1105' in info)
View Code

2、多级字典嵌套及操作

#Author:licy
av_catalog = {
    "欧美":{
        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    },
    "日韩":{
        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    },
    "大陆":{
        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
}
av_catalog['大陆']['1024'][1]="可以在国内做镜像"
av_catalog.setdefault("大陆",{"www.baidu.com":[1,2]})#先去字典里取大陆这个值,如果能取到就直接返回,否则创建一个新值
print(av_catalog)
View Code
#values
>>> info.values()
dict_values(['LongZe Luola', 'XiaoZe Maliya'])

#keys
>>> info.keys()
dict_keys(['stu1102', 'stu1103'])


#setdefault
>>> info.setdefault("stu1106","Alex")
'Alex'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> info.setdefault("stu1102","龙泽萝拉")
'LongZe Luola'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}


#update 
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
>>> info.update(b)
>>> info
{'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

#items
info.items()
dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')])


#通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
>>> dict.fromkeys([1,2,3],'testd')
{1: 'testd', 2: 'testd', 3: 'testd'}
其他用法

3、循环字典

#Author:licy
av_catalog = {
    "欧美":{
        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    },
    "日韩":{
        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    },
    "大陆":{
        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
}
for i in av_catalog:#高效循环
    print(i,av_catalog[i])

for k,v in av_catalog.items():#效率不高
    print(k,v)
View Code

 

posted @ 2017-07-18 13:24  licy_python  阅读(216)  评论(0编辑  收藏  举报