Python基础定义
- Python的解释器种类:
- CPython:
安装Python后,官方提供了一个Python解释器CPython,是通过C语言写的,在命令行下运行Python就是启动Cpython解释器,运用最广泛的一个。
- Ipython:
基于Cpython之上的一个解释器,跟Cpython差不多,只不过在交互式上有所增强;
- Jpython:
用Java语言写的一个python解释器,可以直接将python编译成Java字节码运行;
- PyPy:
它的目标是使python代码执行速度快,使用JIT技术实现的,对python动态编译,
- ironPython
运行在微软的.net平台上
2.Pythong变量:
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
Python中的,全部大写的变量名代表常量
3.python数据类型:
- 布尔值: (ture|false)
- 数字:
整型(int):
在32位机器上,整数的位数为32位,即:-2**31~~2**31-1,即:-2147483648——2147483647
在64位机器上,整数的位数为64位,即:-2**63~~2**63-1,即:-2147483648——2147483647
长整型(long):
python中没有指定位宽,理论上可以无限大,但受限于内存;但是到python3中没有long了,全部都是正型了。
- 浮点型(float):
是有理数的一个特定子集的集合,Python中精度默认只能是17位精度,所有的语言都是这样的,跟浮点数的存储结构有关系
Python中的工具箱,有个decimal模块,getcontext(),其中prec定义的是精度,默认是28,改之可以调。
1 >>>from decimal import getcontext 2 >>> from decimal import Decimal 3 >>>getcontext() 4 Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999, capitals=1, flags=[], traps=[DivisionByZero, Overflow, InvalidOperation]) 5 >>> b = Decimal(1)/Decimal(3) 6 >>> b 7 Decimal('0.3333333333333333333333333333') ///28个精度值 8 >>> getcontext().prec = 50 9 >>> b = Decimal(1)/Decimal(3) 10 >>> b 11 Decimal('0.33333333333333333333333333333333333333333333333333') ////50个精度值。
- 字符串
在python中,加了引号的字符都被认为字符串,多行用多引号(''' '''),注意字符串的拼接只能是双方都是字符串,不能跨数据类型;
- 列表
列表是数据的集合,可以存任何数据,可以增删改查:
1.创建空列表 >>>name=list() ////不推荐 >>>name=[] ////推荐 2.为列表增加值 >>>name=['a','b','c',1,3,3,4,5,6] 3.向列表追加值 >>>name.append('ming') ///向最后加一个值 >>>name ['a','b','c',1,3,3,4,5,6,'ming']o 4.插入 >>>name.insert(1,'long') >>> name ['a', 'long', 'b', 'c', 1, 3, 3, 4, 5, 6, 'ming'] >>> name.insert(1:3,'tong') File "<stdin>", line 1 name.insert(1:3,'tong') ^ SyntaxError: invalid syntax >>> name.insert(1,'long') >>> name ['a', 'long', 'long', 'b', 'c', 1, 3, 3, 4, 5, 6, 'ming'] 5.删除 >>> name.remove('long') >>> name ['a', 'long', 'b', 'c', 1, 3, 3, 4, 5, 6, 'ming'] >>> name.pop() 'ming' >>> name.pop(3) 'c' >>> name ['a', 'long', 'b', 1, 3, 3, 4, 5, 6] >>> del name[4] >>> name ['a', 'long', 'b', 1, 3, 4, 5, 6] >>> del name[1:3] >>> name ['a', 1, 3, 4, 5, 6] ////可以看出remove按指定的字符串删除的,而pop(),del删除的是索引位的值,del还可以删整个列表,比如: >>>del name >>> name Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'name' is not defined 6.修改 >>>n=['ming', 'mi', 'long'] >>>n[2]='junjun' >>>n ['ming', 'mi', 'junjun'] 7.查询 >>>n[0] ///列表是有下标的,也就是索引,从0开始,如想取第一个值: 'ming' >>>n[1] 'mi' /////打算查询junjun是位于哪个下标位, >>>n.index('junjun') 2 >>> n[2] 'junjun' ////查询有几个字符串junjun >>>n.count('junjun') 1 8.切片 >>>n=['ming', 'mi', 'junjun','tingting','yang','alex','long','min','fei','jun'] >>>n[1:7] ['mi', 'junjun', 'tingting', 'yang', 'alex', 'long'] ///切片是顾头不顾尾的,虽然是1到7,但是取的是从1到6的值 >>>n[-1] ['jun'] >>>n[-3:-1] ['min', 'fei'] ////如果想把最后一个值也取出来,那么应该是: >>>n[-3:] ['min', 'fei', 'jun'] /////分批取值 >>>n[1:7:2] ////隔一个值取一次,2是步长 9.排序 >>>n.sort() >>> n ['alex', 'fei', 'jun', 'junjun', 'long', 'mi', 'min', 'ming', 'tingting', 'yang' >>>n.insert(1,'#') >>>n.insert(5,'!') >>>n.insert(8,'*') >>> n ['alex', '#', 'fei', 'jun', 'junjun', '!', 'long', 'mi', 'min', '*', 'ming', 'ti ngting', 'yang'] >>>n.sort() >>>n ['!', '#', '*', 'alex', 'fei', 'jun', 'junjun', 'long', 'mi', 'min', 'ming', 'ti ngting', 'yang'] //////这是因为,排序是按ASCSII表的标注排的 10.循环 >>>for i in n: >>> for i in n: ... print('loop: ',i) ... loop: ! loop: # loop: * loop: alex loop: fei loop: jun loop: junjun loop: long loop: mi loop: min loop: ming loop: tingting loop: yang 11.列表联合 >>>n1=[1,343,3,4] >>>n + n1 >>> n + n1 ['!', '#', '*', 'alex', 'fei', 'jun', 'junjun', 'long', 'mi', 'min', 'ming', 'ti ngting', 'yang', 1, 343, 3, 4] >>> n.extend(n1) >>> n ['!', '#', '*', 'alex', 'fei', 'jun', 'junjun', 'long', 'mi', 'min', 'ming', 'ti ngting', 'yang', 1, 343, 3, 4]
- 元组
元组是只读的列表,无法修改,使用小括号;如:
name1=("ming","hua")
- 字典
字典是key:value的数据类型,使用大括号创建字典;如:
city = {
'china':'beijing'
'english':'lundun'
}
其中china和english是key,beijing和lundun是键值;
注意:key值是无序的,且必须是唯一的;
增加
>>> city['america'] = 'huashengdun' >>> print(city) {'america': 'huashengdun', 'english': 'lundun', 'china': 'beijing'}
修改
>>> city['america'] = 'Washington' >>> print(city) {'america': 'Washington', 'english': 'lundun', 'china': 'beijing'}
多级字典嵌套
>>> city = { ... 'china':["beijing","hebei",'sichuan','yunnan'], ... 'english':["london","bath",'birmingham'] ... } >>> print(city) {'english': ['london', 'bath', 'birmingham'], 'china': ['beijing', 'hebei', 'sichuan', 'yunnan']} >>>city['english'] += 'derby' {'english': ['london', 'bath', 'birmingham', 'd', 'e', 'r', 'b', 'y'], 'china': ['beijing', 'hebei', 'sichuan', 'yunnan']} >>> city['english'][5] = 'derby' >>> print(city) {'english': ['london', 'bath', 'birmingham', 'd', 'e', 'derby', 'b', 'y'], 'china': ['beijing', 'hebei', 'sichuan', 'yunnan']}
删除
>>> name = { ... "ming":"27", ... "fei":"33", ... "min":"1" ... } >>> name.pop('ming') '27' #删除ming >>> print(name) {'fei': '33', 'min': '1'} >>> name['jun']='30' >>> name['ting']='24' >>> name['long']='31' >>>name {'jun': '30', 'ting': '24', 'fei': '33', 'min': '1', 'long': '31'} >>> name.popitem() ('jun', '30') #随机删 >>> print(name) {'ting': '24', 'fei': '33', 'min': '1', 'long': '31'} >>> del name['fei'] >>> {'ting': '24', 'min': '1', 'long': '31'}
其他操作
#打印字典里的值:values() >>> name = { ... "ming":"27", ... "fei":"22" ... } >>>name.values() dict_values(['27', '22']) #打印字典里的key值 >>> name.keys() dict_keys(['ming', 'fei']) >>> name1 = { ... 'zeze':'88', ... 'xiangfei':'23', ... 'hengxi':'27' ... } #更新字典 >>> name.update(name1) >>> name {'ting': '24', 'longlong': '25', 'xiangfei': '23', 'hengxi': '27', 'zeze': '88', 'ming': '27', 'fei': '22'} #列出字典里的内容 >>> name.items() dict_items([('ting', '24'), ('longlong', '25'), ('xiangfei', '23'), ('hengxi', '27'), ('zeze', '88'), ('ming', '27'), ('fei', '22')]) #循环 >>> for kv,vv in name.items():print(kv,vv) ... ting 24 longlong 25 xiangfei 23 hengxi 27 zeze 88 ming 27 fei 22 第二种循环方法:更高效,不用转换为列表 >>> for i in name:print(i,name[i]) ... ting 24 longlong 25 xiangfei 23 hengxi 27 zeze 88 ming 27 fei 22