python第二周:数据类型、列表、字典
1.模块初识:
sys模块:
import sys
print(sys.path)
#path打印环境变量--》
['F:\\python学习\\projects\\s14\\day2',
'F:\\python学习\\projects\\s14',
'F:\\python3.5\\python35.zip',
'F:\\python3.5\\DLLs',
'F:\\python3.5\\lib',
'F:\\python3.5',
'F:\\python3.5\\lib\\site-packages']
#这些路径存储的是python的环境变量
#其中第三方库模块一般存储在'F:\\python3.5\\lib\\site-packages' 中
#官方标准库模块一般存储在'F:\\python3.5\\lib'中
#当引入模块时,一般是现在当前目录下找,如果找不到再去全局变量中去找
print(sys.argv) #打印当前程序的路径
os模块:
import os
cmd_res = os.system("dir") #显示当前文件目录,执行命令不保存结果
cmd_res = os.popen("dir").read()#os.popen("dir"):将当前文件目
#录存储到内存中的一个临时区域, .read()读取这个临时存储的地址,将内容取
#出来
print("->",cmd_res)
os.mkdir("new_dir")#在当前文件目录下在创建一个新的文件目录
2.pyc文件:
随着Java等基于虚拟机语言的兴起,我们不能把语言纯粹的分成解释性和编译性这两种,用Java来举例,Java首先时通过编译器来编译成字节码文件,然后运行是通过解释器来解释机器文件,所以说Java是一门先编译后解释的语言
python和Java、c#一样,也是一门基于虚拟机的语言,当我们在命令行中输入python hello.py时,其实时激活了python的“解释器”,告诉编译器:你要开始工作了。可是在解释之前,其实执行的第一项工作和Java一样:是编译
简述python的运行过程:
pycodeobject文件是python编译器真正编译的结果。当python程序运行时,编译的结果则是位于内存中的pycodeobject中,当python运行结束时,解释器会将pycodeobject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则重复上面的过程。所以说pyc文件其实就是pycodeobject的一种持久化保存方式
3.python数据类型:
1.数字:
int (整型)
在32为机器上,整数的位数时32位,取值范围为-**--**-
在64位机器上,整数的位数时64位,取值范围为-**--**-
long (长整型)(python3之后就没有长整型了)
python的长整数没有指定位宽,即:python没有限制长整数数值的大小,但由于机器的内存有限,我们使用的长整数数值不可能无限大
自python2.2起,如果整数溢出,python会自动将整数数据转化为长整数,所以如今在长整数后面不加字母L也不会导致严重后果了
float (浮点型)
浮点数用来处理实数,即带有小数的数字,类似C语言中的double类型,占8个字节,其中52位表示底,位表示指数,剩下的一位表示符号
complex (复数)
复数是由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数
附注:python张存在小数字池:--
2.布尔值:
真或假
或0
3.字符串:
”hello world
python字符串在C语言中体现为是一个字符数组,每次创建字符串的时候需要在内存中开辟一块连续的存储空间,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内存中重新开辟一块空间
入门知识拾遗
,bytes类型
Python 最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。
你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。
string -encode->bytes-decode->string
字符串可以编码成字节包,而字节包可以解码成字符串。
编码是这个转换过程中至关重要的一部分。离了编码,bytes对象b'\xa420'只是一堆比特位而已。编码赋予其含义。
采用不同的编码,这堆比特位的含义就会大不同。
2.三元运算
result = 值1 if 条件 else 值二
3.进制
二进制,0 1
八进制,0 1 2 3 4 5 6 7
十进制:0 1 2 3 4 5 6 7 8 9
十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F
4.列表:
列表的创建:
names = []
列表的操作:
切片:
names = ["a",'b','c','d']
print(names[0:3]) #a,b,c
print(names[-3:-1]) #b,c
print(names[:]) #a,b,c,d
print(names[0]) #a
print(names[-1]) #d
注意:0可以省略不写
追加:
names = ["a",'b','c']
names.append("Mr Wu")
print(names) #a,b,c,Mr Wu
插入:
names = ['a','b','c']
names.insert(1,"Mr Wu")
print(names) #a,Mr Wu,b,c
修改:
names = ["a",'b','c']
names[0] = "Mr Wu"
print(names) #Mr Wu,b,c
删除:
names = ["a","b","c","d"]
names.remove("a")
print(names) #b,c,d
names.pop(0)
print(names) #b,c,d
del names[0]
print(names) #b,c,d
names.pop()#删除最后一个元素的值
print(names) #a,b,c
del names #删除列表
查找:
names = ["a","b","b","c","d"]
print(names.index("a")) #0;查找元素的位置
print(names.count("b")) #2;查找相同元素的个数
清空:
names = ["sansan","lislis"]
names.clear()
翻转:
names = ["a","b","c","d"]
names.reverse()
print(names) #d,c,b,a
排序:
names.sort()
扩展:
At = ["e","f","g"]
names = ["a","b","c","d"]
names.extend(At)
print(names) #a,b,c,d,e,f,g
浅copy:
import copy
names = ["a","b",["c","d"],"e"]
names2 = names.copy()
#names2 = copy.copy(names)
names[0] = "Mr Wu"
names[2][1] = "alex"
print(names2) #a,b,[alex,d],e
现象原因:names2单独开辟了一块空间存储元素,第一层列表直接把元素值拷贝过来,第二层拷贝的是嵌套列表的地址
深copy:
import copy
names = ["a","b",["c","d"],"e"]
names2 = copy.deepcopy(names)
names[0] = "Mr Wu"
names[2][1] = "alex"
print(names2) #a,b,[c,d],e
循环:
for i in nmaes:
print(i)
5.字符串:
name = "my name is alex"
print(name.capitalize()) #让首字母大写
print(name.count("a")) #统计字符的个数
print(name.casefold()) #没什么用
print(name.center(50,"-")) #-----------------my name is alex------------------,保证长度为50,不够的两边补-
print(name.encode(encoding = "utf-8"))
print(name.endswith("ex")) #判断一个字符串以什么结尾 True 、False
'''
name = "my \tname is alex"
print(name.expandtabs(tabsize=30))#my name is alex
'''
print(name.find("name")) #找到name首字符的位置
print(name[name.find("name"):8]) #切片,此例是取出name
'''
name = "my name is {_name}"
print(name.format(_name = "alex")) #格式化输出
print(name.format_map({"_name":"alex"}))#使用字典时使用这种方法
'''
print("abc123".isalnum()) #判断是否包含阿拉伯数字 True、False
print(name.index("name")) #返回字符串第一个字符的位置
print("abx123".isalpha()) #判断是否为纯英文字符串 True 、False
print("1A".isdecimal()) #判断是否为十进制 True、False
print("".isdigit()) #判断是否为整数 True、False
print("d1Q".isidentifier()) #判断是不是一个合法的标识符(变量名) True、False
print("Abc".islower()) #判断是否为小写字符串 True、False
print("Abc".isnumeric()) #跟isdigit()用法相同
print("33A".isspace()) #判断是否为空格 True、Falsw
print("My Name Is Alex".istitle()) #判断是否为标题 True、False
print("my name is".isprintable()) #判断是否可以打印(tty file,drive file不可打印)
print("my name is".isupper()) #判断是否为大写字母 True、False
print("my name is".join("=="))#=my name is=
print("+".join(["","","",""])) #1+2+3+4
print(name.ljust(50,"*")) #my name is alex***********************************,保证长度为50,不够的右边补*
print(name.rjust(50,"-")) #-----------------------------------my name is alex,保证长度为50,不够的左边补-
print(name.lower()) #将大写字符变为小写
print(name.upper()) #将小写字符变为大写
print("\nAlex".lstrip()) #去掉左边的空格和回车
print("=====")
print("alex\n".rstrip()) #去掉右边的空格和回车
print("-----")
print("\nalex\n".strip())# 去掉左边和右边的空格和回车
print("////////")
#随机密码
'''
p = str.maketrans("abcdef","123456") #加密
print("alex li".translate(p)) #解密 #输出1l5x li
'''
print("alex le".replace("l","L",1)) #替换字母 ,aLex le
print("alex li".rfind("l")) #找到最右边的l的位置
print("1+2+3+4".split("+")) #划分成列表 ['1', '2', '3', '4']
print("1+2+3+4".startswith(""))#判断一个字符串以什么开始 True 、False
print("1+2\n+3+4".splitlines()) #按照换行符划分成列表['1+2', '+3+4']
print("alex li".swapcase()) #把字符串变为大写,ALEX LI
print("alex li".title()) #变为标题,Alex Li
print("alex li".zfill(50))#0000000000000000000000000000000000000000000alex li,保证长度为50,不够的左边补0 #字符串无法修改,只能更新覆盖 #取出字符串中的数字的方法:
products = "Iphone,4000"
number = int(products.split(",")[1])
print(number) #字符串追加的方法
import random
checkcode = ""
for i in range(5):
current = random.randrange(5)
if i == current:
tm = chr(random.randint(65,90))
else:
tm = random.randint(0,9)
checkcode += str(tm)
print(checkcode)
6.字典:
1.字典的创建:
info = {
"stu1101": "TengLan Wu",
"stu1102": "LongZe Luola",
"stu1103": "XiaoZe Maliya",
}
单层字典的操作:
1.将字典变成一个列表:
info.items()
print(info)
'''
#dict_items([("stu1101","TengLan Wu"),("stu1102","LongZe
LuoLa"),("stu1103","XiaoZe Maliva")])
'''
2.打印所有的values:
print(info.values())
#dict_values(["TenLan Wu","LongZe Loula","XiaoZe Maliva"])
3.打印所有的keys:
print(info.keys()) #dict_keys(["stu1101","stu1102","stu1103"])
4.字典时无序的,因为其没有下标
5.查找value:
print(info["stu1101"]) #TengLan Wu,如果没有则报错
print(info.get("stu1101")) #TengLan Wu,如果没有则返回None
6.修改value:
info["stu1101"] = "Mr Wu"
7.增加:
info["stu1104"] = "Mr Wu"
8.删除:
del info["stu1101"]
info.pop("stu1101")
info.popitem() #随机删除
9.字典的遍历:
for i in info:
print(i,info[i]) #stu1103 XiaoZe Maliya
'''
#stu1102 LongZe Luola
#stu1101 武藤兰
#stu1104 cangjingkong
建议使用这种方法,其相当于一个迭代器
'''
多层字典嵌套:
1.创建:
1.av_catalog = {
"欧美":{
"www.youporn.com":["很多免费的,世界最大的","质量一般"],
"www.pornhub.com":["很多免费的,也很大","质量比yourorn高点"],
"letmedothistoyou":["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌丝请绕路"],
},
"日韩":{
"tokyo-hot":["质量怎么样不清楚,个人已经不喜欢日韩范了","听说是收费的"],
},
"大陆":{
"":["全部免费,真好,好人一生平安","服务器在国外,慢"]
},
}
2,修改:
av_catalog["大陆"][""][1] = "可以在国内左镜像"
av_catalog.get("大陆").get("")[1]
3.删除:
del av_catalog["大陆"]["1024"][1]
4.增加
av_catalog.setdefault("taiwan",{"www.baidu.com":["资源少","质量差"]})
python第二周:数据类型、列表、字典的更多相关文章
- python第二周数据类型 字符编码 文件处理
第一数据类型需要学习的几个点: 用途 定义方式 常用操作和内置的方法 该类型总结: 可以存一个值或者多个值 只能存储一个值 可以存储多个值,值都可以是什么类型 有序或者无序 可变或者不可变 二:数字整 ...
- python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍
目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...
- python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍
目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...
- python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍
目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...
- python基础一数据类型之字典
摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...
- Python基础——原生数据类型(字典,列表,元组,字符串)
字典Dictionary 字典定义了键值对的1对1管理. 1.定义字典 请看下面的栗子,我们先创建了一个具有两个元素的字典,每对都是key:value的形式. 我们能通过key得到value,但是不能 ...
- day08整理(周总结\列表\字典内置方法)
一.周总结 一 计算机基础之编程 1.什么是编程语言 编程是人与计算机交流的介质 2.什么是编程 通过编程语言写一堆文件 3,为什么编程 取代劳动力,帮人类干活 二 计算机组成 1.CPU 控制器 控 ...
- python第二周
第二周,PYTHON图形绘制 一,计算机技术的演进发展 1946-1981.从第一台计算机的诞生到IBM的PC机的出现,我们称之为”计算机系统结构时代“.————这个时代重点在解决计算能力问题 198 ...
- python中用json存储列表字典等文件操作
JSON字符串用json.dumps, json.loads JSON文件名用json.dump, json.load 由于需要在脚本重启后依旧能够记住之前所使用的列表内容, 故采用json存储列表文 ...
随机推荐
- HDU 2912
直线关于球的多次反射,求最后一次反射点 #include <iostream> #include <cstdio> #include <cstring> #incl ...
- LeetCode: Word Ladder [126]
[题目] Given two words (start and end), and a dictionary, find the length of shortest transformation s ...
- leetcode解题文件夹
点击打开链接点击打开链接点击打开链接參考文献:http://blog.csdn.net/lanxu_yy/article/details/17848219 只是本文准备用超链接的方式连接到对应解答页面 ...
- java.lang.NoClassDefFoundError: org/json/JSONException
问题: 解决办法:
- 刚開始学习的人非常有用:struts2中将jsp数据传到action的几种方式
先给上struts.xml代码: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE strut ...
- android-PullRefreshLayout使用
类似与谷歌的SwipeRefreshLayout.但比SwipeRefreshLayout美丽. 执行效果: 使用说明: 用法和SwipeRefreshLayout几乎相同. 在xml中: 1 2 3 ...
- luogu2508 [HAOI2008]圆上的整点
题目大意 给出\(r\),求圆\(x^2+y^2=r^2\)上坐标均为整数的点数.\(n<=2,000,000,000\) 总体思路 我们看到这个数据大小,还是个数学题,想到这个的时间复杂度应当 ...
- nyoj--92--图像有用区域(模拟)
图像有用区域 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 "ACKing"同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑 ...
- 实现第三方登录(QQ、微信、微博)
第三方登录,就是使用大家比较熟悉的比如QQ.微信.微博等第三方软件登录自己的网站,这可以免去注册账号.快速留住用户的目的,免去了相对复杂的注册流程.下边就给大家讲一下怎么使用PHP开发QQ登录的功能. ...
- python爬虫:爬取凤凰指数
在知乎上看到的这个问题,讲讲我爬取过程中遇到的问题: 1.循环爬取其他页面,在其他项目中用循环一般可以搞定,可是这个,第一页和第二第三页的表格是不同的,所以要重新写规则,我懒,写了第一页后,就不想在写 ...