Python基础定义

  1. 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个精度值。
decimal模块--扩大浮点数精度

 

  • 字符串

    在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'}
View Code

修改

>>> city['america'] = 'Washington'
>>> print(city)
{'america': 'Washington', 'english': 'lundun', 'china': 'beijing'}
View Code

多级字典嵌套

>>> 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']}
View Code

删除

>>> 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'}
View Code

其他操作

#打印字典里的值: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

 

 
posted @ 2018-03-03 18:43  才华等于野望  阅读(246)  评论(0编辑  收藏  举报