python 学习笔记1
目录
一、开发IDE pycharm破解
去官方下载(https://www.jetbrains.com/pycharm/download/#section=windows)最新版,然后选择license server,输入: http://xidea.online。破解。现在很好用,以后不好说。
二、pip
(windows版)默认的python 没有安装,需要去官方下载。下载完成,用管理员命令行,进入pip目录,然后输入:python setup.py install。安装包直接用 python pip install requests,
三、python 类型
python是弱类型的语言,不用声明变量类型名称:如:name=zhang
3.1 int和long
当一个int的变量超过2*32-1的时候会自动变成long。
3.2.bool类型
True和False 注意这里的True和False 首字母都是大写。
3.3 str类型字符串
3.3.1 普通字符串
‘str’ 字符 “str” 都表示字符串。普通字符串末尾加 \ (反斜杠)表示换行。
例子:s='s' 单引号和双引号都表示字符串 ss="ss"
3.3.2 、 长字符串
‘’‘ ’‘’和”“” “”“ 都表示长字符串,可以跨多行。
sssr=''' s s
s '''
3.3.3 、原始字符串
原始字符串以r开头,在原始字符串当中反斜杠 \ 不会当成特殊字符处理。(但是结尾不能是\(反斜杠) 会报错。因为python不知道是否要结束原则字符串,需要额外转义)。
3.3.4 、Unicode字符串
又称为unicode对象。Python中普通的字符串是以8为的ascll存储的,而uncode字符串存储为16位的unicode字符,这样能表示更到字符集,支持大多数语言的特殊字符。
3.4 repr 函数
repr(函数)和 ``(反逗号,3.0版本中已经去掉),都可以将值创建一个字符串,以合法的python表达是表示。
3.5 万恶的+号
其内部原理,python 没有字符串,字符串实际是连续的字符数组。当字符串添加字符的时候,放弃原有的字符数组,新建立新的连续字符数组。用+拼接可想而知。
print("hello "+"zhang!"+"\nmy name is"+"wang")
print("hello %s!\nmy name is %s" %("zhang","wang")) # 这个的效率更高,因为只有一个字符串。
这样,也是一样的效果,同print('hello %s' %('zhang'))
3.6 注释
pyhton 单行注释用# ,多行注释用(三个点)。选中多行按下ctrl+/ 可注释选中的行。
# 这是单行注释 ''' 我是多行注释 '''
3.7 input()
相当于C# Console.ReadLine()。将所有输入信息看作字符串,以字符串返回,然在2.0版本input(),如果输入的是数字,返回的也是数字类型。在2.0版本所有输入返回字符串函数是 raw_input(),但是3.0时候raw_input()去掉了,直接是input()。
四 、列表和元组
4.1 、 通用的序列操作。//序列包括6种:列表、元组其他内建序列类型、Unicode字符串、buffer对象、xrange对象。
1、索引 [] ,Python 索引是从0开始的,最后一个是-1。(字符串也是一个由字符组成的字符数组)
2、切片 [<开始下标>:<分片之后剩余元素的开始下标>],分片是指取一定范围的元素。
2.1、 [<开始下标>:<分片之后剩余元素的开始下标>:<获取元素是,间隔多少个元素取下一个。默认是 1>],如果想从右到左获取元素,【10:3:-1】将间隔元素变成负数(这里注意,变成负数,是从最后一个元素开始算起的)。
2.2、[<开始下标>:] ,这里不设置,剩余原始的开始下标,表示取到数组的最后一个元素。开始为空,表示第一个元素开始。
3、序列相加。
【1,2,3】+【4,5,6】=【1,2,3,4,5,6】
‘hello '+'world'='hello world'
[1,2,3]+'hello' ==error ,序列可以相加,但是必须相同类型的。
4、乘法。
['序列']*5得到包含5次重复的这些序列。.。注意 None,Python内置函数,表示什么都没有,可以使用[None]*5,生成占5位的空值序列。
5、成员资格
检查成员是否存在使用in,包含2种类型,
1、'world' in ['hello', 'world'] 得到True //这里判断的是 ,(逗号)分隔的元素整体
2. 'worl' in 'hello world' 得到true //这里判读是,序列当中是否含有,连续的字符。
6.长度,最小值,最大值
内建函数 len,min和max非常有用,len返回序列中元素个数,min和max分别返回序列中的最小值和最大值。
4.2 、列表:Python的苦力。
1.list函数 。通过list函数,也可以把元组转为列表。
2基本的列表操作
2.1 改变列表:元素赋值
列表的赋值,使用索引:x[3]=1 //不能为不存在元素的位置赋值。
2.2删除元素
x=[1,2,3] delx[2] //删除下标为2的元素。
2.3分片
修改,替换
插入新元素
删除元素
3、列表的方法
3.1、append(<value>) //在列表尾部添加新的元素
3.2、count(<value>) //计算某个元素在列表中出现的次数。
3.3、extend(<list>) //在列表的尾部,添加新的多个元素。也可以说,用另一个列表扩展现有列表。(特别注意:extend()和原始连接(也就是“” + “ ”)很像但不是,原始连接时返回全新的列表。而extend和分片是一样的,只是扩展原来的列表。)
3.4、index(<value>) //从列表中找出某个值第一个匹配项并返回它的下标。(如果值不存在,会报异常。)
3.5、insert(<index>,<value>) //将值插入列表的指定位置。可用分片实现 number[3:3]=[4]
3.6、pop()和pop(<index>) //无参数默认移除并返回最后一个项的值,也可移除指定下标项的项,并返回该项的值。(移除不存在的项会报错)
3.7、remove(<value>) //移除和某个值在列表中的第一个匹配项。注意该方法没有返回值
3.8、reverse() //想列表中的项,反向存放。注意没有返回值。
3.9、sort() //对列表进行排序 sorted(<list>)方法也是一样的排序。按python的默认规则排升序。sorted(<list>).reverse(),反转成降序。
3.10、sort(key=none,reverse=False) //高级排序 ,其中的key是排序的规则,reverse是是否反转。
4、元组 //不可变的序列
元组和list一样是一种序列,唯一不同是元组不能修改。元组定义非常简单,用逗号(,)分割一些值就可以定义。
空元组 也可以用(33,)定义。
4.1、tuple(<list>) //可以把list转换为元组。
4.2、基本操作
元组和list基本操作一样,除了没有修改操作,获取操作是一样的。要注意的是,元组的值得子集,是可以修改的。
五、使用字符串
5.1、 字符串的基本操作
所有的序列操作字符串都可以用(索引,分片,乘法,判读成员资格,求长度,取最小值,取最大值)等。但因为字符串不可变,随意分片赋值不可以用。
5.2、字符串格式化:精简版 在字符串内部%,为字符串格式化操作符。输出的时候,%左边为格式化字符串,%右边,可以一个字符串的数字、字符,或多个值得,元组和字典。(要输出%号,必须使用%%)
5.3、字符串格式化完整版
基本的转换说明符
%字符:标记转换说明符的开始。
转换标志(可选):-表示左对齐;+表示在转换值之前要加上正负号;“ ”(空白字符)表示正数之前保留空格;0 表示转换值若位数不够则用0填充。
(.)后跟精度值(可选):如果转换的是实数,精度值表示出现小数点后几位数,如果是字符串表示该数字表示的最大字段宽度。如果是*那精度将从元组中读取。
转换类型:d,i 数字 o 不带符号的八进制 u不带符号的十进制 x不带符号的十六进制(小写)X不带符号的十六进制(大写)e/E科学计数浮点(小写/大写) f.f十进制浮点 g/G 指数大约-4或者小于精度值则与e/E相同,其他情况与f相同
C 单个字符 r(repr)字符串 s(str)字符串
5.4、字符串的方法
1、find() //在一个子字符串中查找子字符串,并返回字字符串所在下标的左端索引。如果没找到返回-1。
2、join() //非常重要的字符串方法。是split方法的逆向。用来在队列中添加元素:注意必须是字符类型。
3、lower() //返回字符串的小写字母版。
4、replace() //然后所有匹配项都被替换以后的字符串。
5、split() //非常重要的方法,是join方法的逆向。用来将字符串分割成序列。‘1+2+3’.split('+')
6、strip()/strip(<value>) //返回去除两侧空格或者两侧指定匹配字符的字符串。
7、translate() //据说和replace差不多,不多只能处理单个字符。没搞懂。
六、字典
1、创建和使用字典。
personinfo={'name':'张', 'age':16}
2、dict 函数(dict是类型,同str、list、tuple)
可以通过其他字典,或者键值序列建立字典。也可通过dict关键字建立字典。
3、基本操作类型
len(d) //返回字典d中项(键值对应)的个数;
d[k] //返回关联到键k上的值;
d[k]=v //将值v关联键k上;
del d[k] //删除键为k 的项;
k in d //检查d中是否含有键位k的项;
键类型 //字典的键可以定义多种类型:整数型、浮点型、字符串和元组等不可变类型。
自动添加 // 即使某个键不再字典中,也可为他创建一个值,字典会创建新项。
成员资格 // k in d(d为字典) 查找的是键而不是值。注意 v in l(l为列表),查找的是值,而不是索引。
4、字典的格式化字符串
在每个转换说明符%字符后面,加上(用圆括号括起来的)键,后面再跟上其他说明元素。
5、字典的方法
5.1、clear() //清除字典中所有的项。类型list.sort()方法无返回值(返回None)。
两种情况,x和y指向同一个字典。例1 x用新字典来清空,对y没有一点影响。他还是关联到原来的字典。可能是特意为之,但如果真的想清空原字典的所有想,必须使用clear。这样对应的y也被清空。
5.2、copy() //返回一个具有相同键值对的新字典(这个方法实现的是浅复制(shallow copy),因为值本身是相等的(指向同一个值),而不是副本)。
可以看出,当副本中的值替换的时候,原字典不受影响。但当修改某个值得时候(原始修改,而不是替换),原始的字段也会改变,因为同样值也存在元字典上。避免以上的问题可以使用深拷贝(deep copy),复制其所有包含的值。可以使用copy模块的deepcopy函数来完成操作
5.3、formkeys() //使用给定的键建立新的字典,每个键默认对应值None。
5.4、get() //更加宽松的访问字典项的方法。get(<key>,<defaultValue>),当用get方法,访问字典中不存在的键时候,默认返回None(不会报错,用dic[<key>]访问不存在的键会报错),也可以指定当访问的键不存在时默认返回的值。
5.5、has_key() //检查字典是否包含给定的键。在python3.0以后已经没有该方法,__contains__()方法实现同样的功能。
5.6、items()和iteritems() //item方法将所有的字典项以列表的形式返回,这些列表项中的每一项都来自(键,值),但是没有顺序。iteritem()是针对item迭代器更高效(3.0已经没有该方法)。
5.7、keys()和iterkeys() //keys()将字典的key以列表的形式返回。iterikeys()是针对列表键的迭代器。
5.8、pop() //用来获取给定键的值,然后将这个键值对从字典中移除。
5.9、popitem() //从字典中随机移除一个项,因为字典是无序的所以不能和list.pop一样移除最后一项。
5.10、setdefault(<key>,<defaultValue>) //该方法类似get,返回字典中和该键匹配的对应的值,如果不存在该key,那就再字典中添加新项并且设置键值。注意如果不设置值,这默认None.
5.11、update() //可以利用字典项更新其他字典。
5.12、values()和itervalues() //values 方法一列表的方式返回字典的值。注意和返回键不同,返回的列表可以有重复的值。
小结:映射,映射可以使用任何不可变对象标识元素,其中最长用的类型是字符串和元祖。python中唯一内建映射是字典。字典还可以格式化字符串。
主要学习资料,python基础教程(第二版)