zoukankan      html  css  js  c++  java
  • doc

          我们首先要看的是几乎任何语言都具有的数据类型,包括字符串、整型、浮点型以及布尔类型。这些基本数据类型组成了基本控制块,从而创建的Python应用程序。

    一、基本结构

        1、数值:

    Python支持不同的数值类型:

                      int (有符号整数): 通常被称为只是整数或整数,是正或负整数,不带小数点。

                      long (长整数 ): 或长,是无限大的整数,这样写整数,后面跟着一个大写或小写的L。

                      注意:自从Python2.2起,如果整数发生溢出,Python会自动将整数转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。

                      float (浮点实数值) : 或浮点数,表示实数,并写入一个小数点分隔的整数部分和小数部分。浮点数也可以是科学记数法,用e或E表示的功率10 (2.5e2 = 2.5 x 102 = 250).

                      数值类型转换:

                      类型int(X)将X转换为一个普通的整数。

                      类型long(X)将X转换为一个长整数(在python3中已经没有了这个函数)。

                      类型float(X)转换X为一个浮点数。

        2、布尔值:

                     Ture&False 即真或假、1或0.

        3、字符串:

                     字符串(String) 是一段文本字符,通常以某种形式向用户输出。如果我们打开Python的解释器,我们试着最常见的输出“Hello World!”应用:   

                   

    1 print("hello world!!")            ##python3的print()函数的方法必须加上()
    2 hello world!!

          python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,字符串拼接使用+号进行连接,每次使用+号的时候就会在内存中重新开辟一块空间,在python中使用了下面的格式进行拼接,这种方法不会在去占用新的内存,下面来看一下字符串的格式:      

     1 msg='''
     2 personal information:
     3      name: %s
     4      age:  %d'''%('alex',23)     #%s可以代表字符串,%d代表整数,还有一种为%f代表浮点数
     5   
     6 print(msg)
     7   
     8 personal information:
     9      name: alex
    10      age:  23
    11 #还有一种方法,这种方式要比%那种方式处理快一些,%执行要先转换成下面这种方式执行
    12 
    13 name = "i am {0},age {1}"
    14 new_name=name.format('jack',18)
    15 print(new_name)

     字符串常用功能:

          1、移除空白:这里我们通过一个例子来说明:

     1  #!/usr/bin/env python
     2  
     3  name=input("please input your name:")              
     4  age=input("please input your age:")
     5  sex=input("please input your sex:")
     6   
     7   
     8  print('''
     9       This is my message:
    10                name:%s
    11                age:%s
    12                sex:%s'''% (name,age,sex))

    执行结果如下:   

    1 This is  my message:
    2             name:henry
    3             age:25
    4             sex:man

    如果在用户输入信息的时候,无意输入多个空格,影响美观,我想不管用户输入多少个空格都去掉正常格式输出,这里就用到了strip()来去掉空格:

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 
     4 name=input("please input your name:").strip()      #还有两张用法:lstrip或rstrip(去除左边的空格,去除右边的空格)
     5 age=input("please input your age:").strip()
     6 sex=input("please input your sex:").strip()
     7 
     8 
     9 print('''
    10      This is my message:
    11                 name:%s
    12                 age:%s
    13                 sex:%s'''% (name,age,sex))

     这样用户输入的空格就会去掉,注意:这里的strip()不会去掉中间的空格。

          2、使用split()进行字符串分割,下面来看一段代码:

    1 #!/usr/bin/env python
    2 #coding:utf-8
    3 
    4 s="hello World! Everyone! This Is My First String!"   ##首先定义一段字符串
    5 
    6 print(s.split("!"))                                   ##使用split()来以!为分割线进行分割
    7 
    8 ['hello World', ' Everyone', ' This Is My First String', '']    #执行结果

    使用方法:

    s.split([sep, [maxsplit]]) 以sep是分隔符,把s分割成一个list。sep默认为空格。maxsplit是分割的次数,默认是对整个s进行分割。
    s.rsplit([sep, [maxsplit]]) 和split()的区别是它是从s的串尾往前进行分割。

    3、python中使用len()来判断字符串的长度:

    1 name=henry              ##定义一个变量
    2 print(len(name))        ##使用len()来判断字符串的长度
    3 
    4 5                       ##执行结果

          4、这里我们一起来实验一下python的索引和切片:

    1 name="helloworld"
    2 
    3 print(name[0])          ## 在字符中中每个字母对应的一个下标,从左往右以0开始,从右往左-1开始
    4 print(name[-1])
    5 
    6 print(name[0:5])        ##这里面的[0:5]代表的是截取下标0到5的字符,当然这里也可以从右往左
    7 print(name[-5:])

    二、高级结构

    (一)、列表(list)

     首先我们来看一下怎么创建列表:

    1 name_list=['Henry','tom','seven']               
    2 name_list=list(['Henry','tom','seven'])      #上面那种方法会调用下面这个来实现的

     下面来看下列表有那些基本操作:    

      1、列表的索引、分片、步长       注:列表的修改不会再内存中申请新的地址

     1 name=['Henry','tom','seven','alex','wusir','penny']     ##定义一个列表
     2 
     3 print(name[0])                   ##列表的索引跟字符串类似,在列表中的元素都对应一个下标。
     4 
     5 Henry                            ##执行结果
     6 
     7 #列表的分片
     8 
     9 print(name[0:4])                 ##取下标从0到4的元素
    10 
    11 ['Henry', 'tom', 'seven', 'alex']

    12 print(name[0:5:2]) ##这种方法是取下标从0到5的元素,步长为2,也就是间隔2个元素,

    13 ['Henry','seven','wusir'
    ]

       2、列表的方法

      方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象。方法可以这样进行调用:

    对象.方法(参数)下面我们一起来看一下列表的方法:

    1 x=[1,2,3,4,1,2,3] 
    2 >>> dir(x) 3 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
    '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
    '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
    '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

          1. append:列表末尾追加新的对象。

    1 lst=[1,2,3]
    2 lst.append(4)      #会在最后追加一个字符
    3 lst
    4 [1,2,3,4]
    5
    6 "_".join(name_list) #通过“”.join()可以将列表转换成字符串
    7 'alex_eric_serven'
    8
    'alex' in name_list #in函数判断字符串在不在列表里
    9 True
    10 'jack' in name_list
    11 False
     

    2.count:统计某个元素在列表中出现的次数。

    1 name=[1,2,3,1,5,6,3,2,1,7,8,2]
    2 print(name.count(1))                 ##统计1在列表中出现的次数
    3 3                                    ##执行结果

         3.index:从列表中找出某个值第一个匹配项的索引位置。

    1 name="we are the knights who say ni"
    2 lst=name.split()                   ##将字符串以空格切片存到列表中
    3 
    4 print(lst.index('the'))            ##取元素the在列表中的位置下标
    5 
    6 2

    4.insert:将对象插入到列表中。

    1 name="we are the knights who say ni"
    2 lst=name.split()
    3 lst.insert(1,'haha')          ##在下标1的位置上插入字符串haha,
    4 print(lst)
    5 
    6 ['we', 'haha', 'are', 'the', 'knights', 'who', 'say', 'ni'] 

         5.pop:会移除列表中的一个元素(默认是最后一个),并且返回该元素的值。

    1 x=[1,2,3]
    2 x.pop()                 ##pop方法默认删除最后一个元素
    3 print(x)
    4 x.pop(0)                ##当然也可以根据下标位置进行删除
    5 print(x)        

      注意:pop方法是唯一一个既能修改列表又能返回元素值(除了none)的列表方法。

        6.remove:移除列表中某个值的第一个匹配项。

    1 x=[1,2,3,1]
    2 x.remove(1)   #删除第一个匹配到的元素
    3 print(x)   
     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 
     4 x=[1,2,3,1,1,1,3,2]
     5 print(x.count(1))
     6 
     7 for i in range(x.count(1)):          ##统计出1在列表中出现的次数
     8         x.remove(1)                  ##循环删除
     9 
    10 print(x)

         7.reverse:将列表中的元素反向存放:

    1 >>> x=[1,2,3,4,5]
    2 >>> x.reverse()       
    3 >>> x
    4 [5, 4, 3, 2, 1]

         8.sort:用于在原位置对列表进行排序,在"原位置排序"意味着改变原来的列表,从而让其中的元素按一定的顺序排列,而不是简单的返回一个已排序的列表副本。

    1 >>> x=[3,4,2,87,54,34,56]
    2 >>> x.sort()
    3 >>> x
    4 [2, 3, 4, 34, 54, 56, 87]

        9.extend:可以在列表的末尾追加另一个序列中的多个值。

    1 a=[1,2,3,4,5]
    2 b=[2,3,4,5,6]
    3 a.extend(b)                        ##将b列表追加到a列表中
    4 
    5 print(a)
    6 
    7 [1, 2, 3, 4, 5, 2, 3, 4, 5, 6]    

         10.copy:复制一份列表

    1 >>> x=[1,2,3]
    2 >>> y=x.copy()
    3 >>> y
    4 [1, 2, 3]

     (二)、元组(tuple) 

     元组和列表一样,也是一种序列。唯一不同是元组不能修改。

    x=(1,2,3,4,5)
     dir(x)
    ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', 
    '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__',
    '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

    #这里可以看到元组的方法只有count和index,这里不在详细介绍使用方法

     下面看一下元组和列表之间的转换:

     1 x=(1, 2, 3, 4)          ##定义一个元组
     2 y=list(x)               ##使用list()函数可以将x转换为列表存放在y中
     3  y
     4 [1, 2, 3, 4]
     5  type(x)
     6 <class 'tuple'>
     7 >>> type(y)            
     8 <class 'list'>
     9 >>> z=tuple(y)         ##可以使用tuple()函数将列表转换成列表 
    10 >>> z
    11 (1, 2, 3, 4)

     (三)、字典(Dict)

    字典是Python中唯一内建的映射类型,在字典中的值没有特殊的顺序,但是都存储在一个特定的键(Key)下。键可以是数字、字符串甚至是元组。

    1、字典的特点:

    1,key-value格式,key是唯一的。

    2,无序,与列表有序的特点不同,字典是无序的,列表只所以有序是因为你需要通过索引来定位相应元素,而字典已经可以通过key来定位相对应value,因此为了避免浪费存储空间,

    字典不会对数据的位置进行记录,当然如果你想让其变成有序的,也是可以切换的。

    3,查询速度快,dict是基于hash表的原理实现的,是根据关键字(key-alue)而直接访问在内存存储位置的数据结构。也就是说,它通过把键值通过一个函数的计算,映射到一个表中

    一个位置累访问记录,还加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。

          2、dict的语法格式:

    1 >>> info={'name':'henry',
    2 ...        'job':'IT',
    3 ...        'age':'24',
    4 ...        'company':'xlwb'}
    5 >>> info
    6 {'age': '24', 'job': 'IT', 'company': 'xlwb', 'name': 'henry'

    3、dict的方法:

    >>> info.
    info.__class__(         info.__ge__(            info.__len__(           info.__setitem__(       info.items(
    info.__contains__(      info.__getattribute__(  info.__lt__(            info.__sizeof__(        info.keys(
    info.__delattr__(       info.__getitem__(       info.__ne__(            info.__str__(           info.pop(
    info.__delitem__(       info.__gt__(            info.__new__(           info.__subclasshook__(  info.popitem(
    info.__dir__(           info.__hash__           info.__reduce__(        info.clear(             info.setdefault(
    info.__doc__            info.__init__(          info.__reduce_ex__(     info.copy(              info.update(
    info.__eq__(            info.__iter__(          info.__repr__(          info.fromkeys(          info.values(
    info.__format__(        info.__le__(            info.__setattr__(       info.get(  
     1 >>> info
     2 {'age': '24', 'job': 'IT', 'company': 'xlwb', 'name': 'henry'}  
     3 >>> info['name']               ##查看key为'name'的value
     4 'henry'
     5 >>> info['job']='Boss'         ##将key的value改为'Boss'
     6 >>> info
     7 {'age': '24', 'job': 'Boss', 'company': 'xlwb', 'name': 'henry'}
     8 >>> info['city']='BJ'          ##如果dict中有key为'city',就将其值改为'BJ',如果没有这个key,就创建一条新记录
     9 >>> info
    10 {'age': '24', 'city': 'BJ', 'job': 'Boss', 'company': 'xlwb', 'name': 'henry'}
     1 >>> info
     2 {'age': '24', 'city': 'BJ', 'job': 'Boss', 'company': 'xlwb', 'name': 'henry'}
     3 >>> info.pop('age')           ##删除key为‘age’的数据,跟del info['age']一样
     4 '24'
     5 >>> info.popitem()          ##随机删除一条数据,dict为空时用此语法会报错。
     6 ('city', 'BJ')
     7 >>> info
     8 {'job': 'Boss', 'company': 'xlwb', 'name': 'henry'}
     9 
    10 >>> info
    11 {'city': 'BJ', 'job': 'Boss', 'company': 'xlwb', 'name': 'henry'}
    12 >>> info.items()            ##将dict的key,value转换成列表的形式显示
    13 dict_items([('city', 'BJ'), ('job', 'Boss'), ('company', 'xlwb'), ('name', 'henry')])
    14 
    15 >>> info.get('age')
    16 >>> info.get('name')          ##查找key,如果存在返回其value,否则返回None
    17 'henry'
    18 
    19 >>> info.fromkeys(['a','b','c'],'Test')   ##根据列表['a','b','c']来创建dict里的key,后面的‘Test’是默认的value,如果不指定的话则为None
    20 {'a': 'Test', 'c': 'Test', 'b': 'Test'}
     1 >>> info.clear()           ##清空字典
     2 >>> info
     3 {}
     4 
     5 >>> info=info.fromkeys(['a','b','c'],'Test')           #info.fromkeys()可以已列表的方式打印出所有的key值,info.fromvalues()打印出所有的value值
     6 >>> info
     7 {'a': 'Test', 'c': 'Test', 'b': 'Test'}
     8 >>> info.setdefault('d','Henry')     ##找一个key为'd'的记录,如果这个key不存在,那就创建一个叫'd'的key,并且将value设置为'Henry',如果这个key存在,就直接返回key值。10 'Henry'
    11 >>> info
    12 {'d': 'Henry', 'a': 'Test', 'c': 'Test', 'b': 'Test'}
    13 >>> info.setdefault('c','Henry')
    14 'Test'
    15 
    16 
    17 >>> info
    18 {'d': 'Henry', 'a': 'Test', 'c': 'Test', 'b': 'Test'}
    19 >>> dict2={'e':'fromDict2','a':'fromDict2'}
    20 >>> info.update(dict2)     ##拿这个新字典去更新info,注意dict2中有一个key值'a'与dict info相冲突,这时dict2的值会覆盖info中的a,如果dict2的key在info中不存在,则创建相应的记录。22 >>> info
    23 {'b': 'Test', 'd': 'Henry', 'e': 'fromDict2', 'a': 'fromDict2', 'c': 'Test'}

    4、遍历&copy字典:

        遍历字典dict与遍历列表差不多,只不过记得dict是key-value的结构,要想在遍历时同时打印这key和value,需要这样写:

     1 #!/usr/bin/env python
     2 #coding:utf-8
     3 
     4 info={                                  ##定义info dict
     5     'name':'Henry',
     6     'age':25,
     7     'job':'IT',
     8     'company':'xlwb'
     9     }
    10 for item in info:
    11     print(item,info[item])             ##print(item)只会打印key,如果想同时打印value,需要通过item去取
    12 
    13 #另一种方法
    14 for key,val in info.items():
    15     print(key,val)

       以上是默认把字典转换成一个大列表,并且把每对key-value值转换成了元组,所以你可以在每次循环时赋2个变量进去,因为循环的数据格式如下:

        [('age', 25), ('job', 'IT'), ('name', 'Henry'), ('company', 'xlwb')]

      因此每循环依稀,其实就是把相对应元组中的2个值赋值key,val这两个变量并打印。

  • 相关阅读:
    7
    6
    Robot Motion -- 机器人路径规划
    Delaunay Triangulation
    Voronoi Diagram -- 泰森多边形 (维诺图)
    Window query -- 区间线段包含问题
    5
    es6模块化
    js模块化编程之彻底弄懂CommonJS和AMD/CMD!
    混合开发菜鸟级别总结笔记 内容来自百度一下,你就知道
  • 原文地址:https://www.cnblogs.com/phennry/p/5082113.html
Copyright © 2011-2022 走看看