zoukankan      html  css  js  c++  java
  • Python and django(四)详解python中的数字和序列

    Python  and  django(四)

    前面的内容:

    python and Django()   准备工作

    python and Django()   走马观花识python  

    python and Django()   下马看花赏python-python中的对象  

    从这篇起开始详细介绍python中的类型:数字、序列(字符串、列表和元组)、映射和集合类型,本篇介绍数字和序列。

    数字类型

        含义

    数字类型是不可更改类型,也就是说变更数字的值会生成新的对象。

        更改

    下面是一个修改和删除数字类型的例子。

    >>> a=1
    >>> id(a)
    3629968
    >>> a=
    2
    >>> id(a)
    3629956
    >>> del a
    >>> id(a)
    Traceback (most recent call last):
      File 
    "<interactive input>", line 1in <module>
    NameError: name 
    'a' is not defined
    >>> 

        种类

    Python 中的数字类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。

    1)整型

        a)布尔类型:只有两个值的整型。

        >>> a=True
    >>> 
    int(a)
    1
    >>> a=False
    >>> 
    int(a)
    0
    >>> 

    >>> bool(1)
    True
    >>> 
    bool(True)
    True
    >>> 
    bool('1')
    True
    >>> 
    bool('0')
    True
    >>> 
    bool(0)
    False
    >>> 
    bool('')
    False
    >>> 
    bool([])
    False
    >>> a=
    1
    >>> b=a<
    2
    >>> b
    True
    >>> True,False=False,True
    >>> 
    bool(True)
    False
    >>> 
    bool(False)
    True

     

        b)整型和长整型

    Python 2.2以后可以认为整型和长整型是一回事。

    >>> 10000**8
    100000000000000000000000000000000L
    >>> 
    10**8
    100000000
    >>> 

    2) 双精度浮点数

       类似C#中的double

    3)复数

        复数由实数部分和虚数部分构成: real+imagj

        负数属性:

        num.real 该复数的实部

        num num.imag 该复数的虚部

        num.conjugate() 返回该复数的共轭复数

    >>> a=1+3j
    >>> b=
    1+3j
    >>> id(a)
    19911528
    >>> id(b)
    19911600
    >>> a.real
    1.0
    >>> a.imag
    3.0
    >>> a.conjugate
    <built-
    in method conjugate of complex object at 0x012FD368>

       

    4)十进制浮点数

      Decimal

    >>> from decimal import Decimal
    >>> Decimal(
    "0.1")*Decimal("3.1415926")
    Decimal(
    "0.31415926")

     

        运算符

    1)混合模式运算符

        Python支持不同的数字类型相加。

    >>> 20+3.5698
    23.569800000000001

    2)标准类型运算

    >>> a=1.2
    >>> b=
    1.20
    >>> a==b
    True
    >>> a>b
    False
    >>> b<b
    False
    >>> a>=b
    True
    >>> a<=b
    True
    >>> (a==b) or(a>=b)
    True

    3)算术运算符

    +,-,*/%**//

    >>> 7.3/7
    1.0428571428571429
    >>> 
    7.3//7
    1.0
    >>> 
    4**3
    64
    >>> 

    4)位运算符

        位运算只支持整数。

        取反(~),按位 与(&), (|) 及 异或(^) 及左移(<<)和右移(>>)

    >>> 4**3
    64
    >>> 
    20&35
    0
    >>> 
    30&45
    12
    >>> 
    30|45
    63
    >>> 
    30<<2
    120
    >>> 
    30<<2
    120
    >>> ~
    30
    -
    31
    >>> 
    30 ^ 45
    51
    >>> 

        内建函数

    1typestrtype上篇介绍过。

    2)对应于数字类型的函数。


     int()、float()、long()complex()、bool()

    >> int(3.1415926)
    3
    >>> 
    long(3.1415926)
    3L
    >>> 
    float(3.1415926)
    3.1415926000000001
    >>> complex(
    3.1415926)
    (
    3.1415926000000001+0j)
    >>> 
    bool(3.1415926)
    True
    >>> 
    bool(-3.1415926)
    True
    >>> 
    bool(0)
    False
    >>> 

    3)功能函数

    abs():求绝对值;

    coerce():返回一个包含类型转换完毕的两个数值元素的元组。

    divmod()返回一个包含商和余数的元组。

    pow():指数运算。

           两个参数时类似于**

           pow()还接受第三个可选的参数,一个余数参数。如果有这个参数的, pow() 先进        行指数运算,然后将运算结果和第三个参数进行取余运算。

    round():对浮点数进行四舍五入运算。

    >>> abs(-1)
    1
    >>> coerce(
    1,13L)
    (
    1L13L)
    >>> divmod(
    10,3)
    (
    31)
    >>> divmod(
    10.21,3.58)
    (
    2.03.0500000000000007)
    >>> pow(
    4,3)
    64
    >>> 
    4**3
    64
    >>> pow(
    4,3,5)
    4
    >>> round(
    3.1415926)
    3.0
    >>> round(
    3.78)
    4.0
    >>> 

    int()、math.floor()round的区别:

    函数int()直接截去小数部分。(返回值为整数)

    函数floor()得到最接近原数但小于原数的整数。(返回值为浮点数)

    函数round()得到最接近原数的整数。(返回值为浮点数)

    >>> for n in (0.2,0.7,1.2,1.7,-0.2,-0.7,-1.2,-1.7):
         print 
    'int('+str(n)+'):'
         print 
    int(n)
         print 
    'floor('+str(n)+'):'
         print math.floor(n)
         print 
    'round('+str(n)+'):'
         print round(n)
         
    int(0.2):
    0
    floor(
    0.2):
    0.0
    round(
    0.2):
    0.0
    int(0.7):
    0
    floor(
    0.7):
    0.0
    round(
    0.7):
    1.0
    int(1.2):
    1
    floor(
    1.2):
    1.0
    round(
    1.2):
    1.0
    int(1.7):
    1
    floor(
    1.7):
    1.0
    round(
    1.7):
    2.0
    int(-0.2):
    0
    floor(-
    0.2):
    -
    1.0
    round(-
    0.2):
    0.0
    int(-0.7):
    0
    floor(-
    0.7):
    -
    1.0
    round(-
    0.7):
    -
    1.0
    int(-1.2):
    -
    1
    floor(-
    1.2):
    -
    2.0
    round(-
    1.2):
    -
    1.0
    int(-1.7):
    -
    1
    floor(-
    1.7):
    -
    2.0
    round(-
    1.7):
    -
    2.0
    >>> 

    4)仅用于整数的函数

        a)进制转换

           oct():转换成八进制

           hex():转换成十六进制

    >>> oct(100)
    '0144'
    >>> hex(
    100)
    '0x64'
    >>> 

        bASCII转换

           chr():将数值转换为字符

           ord():将字符转换为数值

    >>> chr(89)
    'Y'
    >>> ord(
    'a')
    97
    >>> ord(
    'A')
    65
    >>> 

        和数字相关模块

    decimal

    十进制浮点运算类 Decimal

    array

    高效数值数组(字符,整数,浮点数等等)

    math/cmath

    标准C库数学运算函数。常规数学运算在match模块,

    复数运算在cmath模块

    operator

    数字运算符的函数实现

    random

    多种伪随机数生成器

     

    序列: 字符串、列表和元组

        特征

    1)有序排列,可以通过下标偏移量访问。

    2)可通过切片操作一次得到多个元素。

        操作运算符

    seq[ind] 获得下标为ind 的元素

    seq[ind1:ind2] 获得下标从ind1 ind2 间的元素集合

    seq * expr 序列重复expr

    seq1 + seq2 连接序列seq1 seq2

    obj in seq 判断obj 元素是否包含在seq

    obj not in seq 判断obj 元素是否不包含在seq

    1)访问

    >>> 'abc'[0]
    'a'
    >>> (
    'a','b','c')[0]
    'a'
    >>> [
    'a','b','c'][0]
    'a'
    >>> (
    'a','b','c')[0:1]
    (
    'a',)
    >>> (
    'a','b','c')[0:2]
    (
    'a''b')
    >>> [
    'a','b','c'][0:2]
    [
    'a''b']
    >>> 
    'abc'[0:2]
    'ab'
    >>> 

     

    2)重复

    >>> 'abc'*3
    'abcabcabc'
    >>> (
    'a','b','c')*2
    (
    'a''b''c''a''b''c')
    >>> [
    'a','b','c']*2
    [
    'a''b''c''a''b''c']
    >>> 

    3)连接

    >>> 'ab'+'c'
    'abc'
    >>> [
    'a']+['b']
    [
    'a''b']

    4)成员关系运算符 in not in

    >>> 'a' in 'abc'
    True
    >>> 
    'a' in 'bcd'
    False
    >>> 
    'a' in('a','b','c')
    True
    >>> 
    'a' in ['a','b','c']
    True
    >>> 
    'a' not in ('b','c','d')
    True
    >>> 

        内建函数

    1)类型转换

    list(iter)

    把可迭代对象转换为列表

    str(obj)

    obj 对象转换成字符串(对象的字符串表示法)

    unicode(obj)

    把对象转换成Unicode 字符串(使用默认编码)

    basestring()

    抽象工厂函数,其作用仅仅是为str unicode 函数提供父类,所以不能被

    实例化,也不能被调用

    tuple(iter)

    把一个可迭代对象转换成一个元组对象

    2)其他函数

    enumerate(iter)  len(seq) maxminsortreversedsortedsumzip

    字符串

    Python 里面单引号和双引号的作用是相同的。

        类型

    1)通常意义的字符串---basestring的子类

    2Unicode字符串----  basestring的子类

        操作

    1)上面序列的操作都可用于字符串。

    2)字符串特有操作

        a)格式化

        格式化符号

    %c

    转换成字符(ASCII 码值,或者长度为一的字符串)

    %r

    优先用repr()函数进行字符串转换

    %s

    优先用str()函数进行字符串转换

    %d / %i

    转成有符号十进制数

    %u

    转成无符号十进制数

    %o

    转成无符号八进制数

    %x/%X

    (Unsigned)转成无符号十六进制数(x/X 代表转换后的十六进制字符的大小写)

    %e/%E

    转成科学计数法(e/E 控制输出e/E)

    %f/%F

    转成浮点数(小数部分自然截断)

    %g/%G

    %e %f/%E %F 的简写

    %%

    输出%

    >>> "%d,%f" %(32,3.14)
    '32,3.140000'

     

         b)模板  Template

        两个属性:

        substitute:在key 缺少的情况下它会报一个KeyError 的异常出来。

        safe_substitute:在缺少key 时,直接原封不动的把字符串显示出来。

    >>> from string import Template
    >>> s=Template(
    'hi,Welcome to visit ${site}!it is about ${memo}!')
    >>> s.substitute(site=
    'apihi',memo='web api')
    'hi,Welcome to visit apihi! it is about web api!'
    >>> s.safe_substitute(site=
    'apihi')
    'hi,Welcome to visit apihi! it is about ${memo}!'
    >>> s.substitute(site=
    'apihi')
    Traceback (most recent call last):
      File 
    "<interactive input>", line 1in <module>
      File 
    "D:\Python25\lib\string.py", line 170in substitute
        
    return self.pattern.sub(convert, self.template)
      File 
    "D:\Python25\lib\string.py", line 160in convert
        val = mapping[named]
    KeyError: 
    'memo'
    >>> 

        c)原始字符串(r

    不对字符串内容进行解析

    >>> print '123\n4'
    123
    4
    >>> print r
    '123\n4'
    123\n4

        dUnicode字符串(u

    内建函数

    字符串的内建函数非常丰富,通过一个例子看一下:

    >>> str='hi,Welcome to visit apihi'
    >>> str.capitalize()
    'Hi,welcome to visit apihi'
    >>> str.center(
    50)
    '            hi,Welcome to visit apihi             '
    >>> str.count(
    'i')
    5
    >>> str.find(
    'i')
    1
    >>> str.endswith(
    'i')
    True
    >>> str.index(
    'i',2)
    15
    >>>str.replace(
    'i','I'
    >>> str.replace(
    'i','I'
    'hI,Welcome to vIsIt apIhI'

    特殊性

    1反斜线+单一字符表示特殊字符

           如:\n表示换行

    2)三引号

          可以跨多行,可以包含特殊字符

    >>> '''hi!
     my name is \n str'''
    'hi!\nmy name is \n str'

    3)不变性

    >>> s='sbc'
    >>> id(s)
    19779744
    >>> s=s+
    'd'
    >>> id(s)
    19738496
    >>> 

     

    列表

    列表是可变的容器。

    创建及访问

    >>> mylist=[1,'a',1.2]
    >>> mylist
    [
    1'a'1.2]
    >>> mylist.append(
    3.14)
    >>> mylist
    [
    1'a'1.23.1400000000000001]
    >>> mylist[
    1]
    'a'
    >>> mylist[
    1:3]
    [
    'a'1.2]
    >>> del mylist[
    1]
    >>> mylist
    [
    11.23.1400000000000001]
    >>> del mylist
    >>> mylist
    Traceback (most recent call last):
      File 
    "<interactive input>", line 1in <module>
    NameError: name 
    'mylist' is not defined
    >>> 

    操作

    1)序列的通用操作

    2)列表专用操作  没有专门用于列表的操作符

    内建函数

    1)标准类型函数

    >>> list1,list2=[1,'a'],[1,'a']
    >>> cmp(list1,list2)
    0

    2)序列函数

    >>> mylist=[1,2,3,'a']
    >>> len(mylist)
    4
    >>> sorted(mylist)
    [
    123'a']

    3)专用于列表的函数

    >>> mylist=range(8)
    >>> mylist
    [
    01234567]
    >>> mylist.append(
    'a')
    >>> mylist
    [
    01234567'a']
    >>> mylist.count
    <built-
    in method count of list object at 0x012E2D78>
    >>> mylist.count(
    1)
    1
    >>> mylist.insert(
    1,'b')
    >>> mylist
    [
    0'b'1234567'a']
    >>> mylist.reverse()
    >>> mylist
    [
    'a'7654321'b'0]
    >>> 

    元组

    元组是不可变的容器。

    创建及访问

    >>> mytuple=(1,2,3,4,'a')
    >>> mytuple
    (
    1234'a')
    >>> tuple(
    'abcdefg')
    (
    'a''b''c''d''e''f''g')
    >>> mytuple[
    0]
    1
    >>> mytuple[
    1:4]
    (
    234)
    >>> id(mytuple)
    19758944
    >>> mytuple=mytuple+(
    'b','c')
    >>> mytuple
    (
    1234'a''b''c')
    >>> id(mytuple)
    19840112
    >>> 

    操作

    >>> mytuple =(1,2,3)
    >>> mytuple *
    2
    (
    123123)
    >>> 
    1 in mytuple
    True
    >>> 
    4 not in mytuple
    True
    >>> len(mytuple)
    3
    >>> (
    1,2)==(2,1)
    False
    >>> 

     

    特殊性

    1)不可变

    >>> mytuple=(1,2,3)
    >>> id(mytuple)
    19773760
    >>> mytuple+=(
    'a','b')
    >>> id(mytuple)
    19758944
    >>> 

    默认元组

    1)所有的多对象的,逗号分隔的,没有明确用符号定义。

    >>> 1,2,3,'a'
    (
    123'a')

    2)所有函数返回的多对象

    >>> def f():
         
    return 1,2,3
     
    >>> f()
    (
    123)

    单对象元组

    >>> a=('a')
    >>> type(a)
    <type 
    'str'>
    >>> 

    非要创建单对象元组,可以通过下面这种做法:

    >>> a=('a',)
    >>> type(a)
    <type 
    'tuple'>

    列表和元组

    元组不可变,即不会被篡改。

    列表和元组可以相互转换

    >>> mytuple=(1,2,3)
    >>> mytuple
    (
    123)
    >>> mylist=list(mytuple)
    >>> mylist
    [
    123]
    >>> tuple(mylist)
    (
    123)

     


     

  • 相关阅读:
    LeetCode 189. Rotate Array
    LeetCode 965. Univalued Binary Tree
    LeetCode 111. Minimum Depth of Binary Tree
    LeetCode 104. Maximum Depth of Binary Tree
    Windows下MySQL的安装与配置
    LeetCode 58. Length of Last Word
    LeetCode 41. First Missing Positive
    LeetCode 283. Move Zeroes
    《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》读后感
    删除docker下的镜像
  • 原文地址:https://www.cnblogs.com/tenghoo/p/Python_django_number_sequence.html
Copyright © 2011-2022 走看看