美文网首页
Python初学者入门随笔 03 Python 数据类型转换

Python初学者入门随笔 03 Python 数据类型转换

作者: 吴朝佳 | 来源:发表于2019-04-16 15:07 被阅读0次

    有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

    以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

    函数 描述
    int(x, base) 将x转换为一个整数
    long(x, base) 将x转换为一个长整数
    float(x) 将x转换到一个浮点数
    complex(real, imag) 创建一个复数
    str(object) 将对象 object 转换为字符串
    repr(object) 将对象 object 转换为表达式字符串
    eval(str) 用来计算在字符串中的有效 Python 表达式,并返回一个对象
    tuple(s) 将序列 s 转换为一个元组
    list(s) 将序列 s 转换为一个列表
    set(s) 转换为可变集合
    dict(d) 创建一个字典。d 必须是一个序列 (key,value) 元组。
    frozenset(s) 转换为不可变集合
    chr(x) 将一个整数转换为一个字符
    unichr(x) 将一个整数转换为 Unicode 字符
    ord(x) 将一个字符转换为它的整数值
    hex(x) 将一个整数转换为一个十六进制字符串
    oct(x) 将一个整数转换为一个八进制字符串

    1. int(x, base)

    • 描述
      int(x, base) 函数用于将一个字符串或数字转换为整型。

    • 语法

    # -*- coding: UTF-8 -*-
    str = '100'
    int(str)
    # 相当于
    int(str, base=10)
    >> 100
    
    • 参数
      x -- 字符串或数字。
      base -- 进制数,默认十进制。

    • 返回值
      返回整型数据。

    • 实例

    # -*- coding: UTF-8 -*-
    int()  # 不传入参数时,得到结果0
    >> 0
    int(3)
    >> 3
    int(3.6)  # 舍去浮点数
    >> 3
    int('12', 16)  # 如果是带参数base的话,12 要以字符串的形式进行输入,16 为 16进制
    >> 18
    int('0xa', 16)
    >> 10
    int('10', 8)
    >> 8
    

    2. long(x, base)

    • 描述
      long(x, base) 函数将数字或字符串转换为一个长整型。

    • 语法

    # -*- coding: UTF-8 -*-
    str = '100'
    long(str)
    # 相当于
    long(str, base=10)
    >> 100L
    
    • 参数
      x -- 字符串或数字。
      base -- 可选,进制数,默认十进制。

    • 返回值
      返回长整型数。

    • 实例

    # -*- coding: UTF-8 -*-
    long()
    >> 0L
    long(1)
    >> 1L
    long('123')
    >> 123L
    

    3. float(x)

    • 描述
      float(x) 函数用于将整数和字符串转换成浮点数。

    • 语法

    # -*- coding: UTF-8 -*-
    num = 100
    float(num)
    >> 100.0
    
    • 参数
      x -- 整数或字符串

    • 返回值
      返回浮点数。

    • 实例

    # -*- coding: UTF-8 -*-
    float(1)
    >> 1.0
    float(112)
    >> 112.0
    float(-123.6)
    >> -123.6
    float('123')
    >> 123.0
    

    4. complex(real, imag)

    • 描述
      complex(real, imag) 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

    • 语法

    # -*- coding: UTF-8 -*-
    complex(1, 2)
    >> (1+2j)
    
    • 参数
      real -- int,long,float 或 字符串;
      imag -- int,long,float;

    • 返回值
      返回一个复数。

    • 实例

    # -*- coding: UTF-8 -*-
    complex(1, 2)
    >> (1+2j)
    complex(1)  # 数字
    >> (1+0j)
    complex("1")  # 当做字符串处理
    >> (1+0j)
    # 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
    complex("1+2j")
    >> (1+2j)
    

    5. str(object)

    • 描述
      str(object) 函数将对象转化为适于人阅读的形式。

    • 语法

    # -*- coding: UTF-8 -*-
    obj = {'name': 'Sampson', 'age': 18}
    str(obj)
    # 相当于
    str(object=obj)
    >> "{'name': 'Sampson', 'age': 18}"
    
    • 参数
      object -- 对象。

    • 返回值
      返回一个对象的string格式。

    • 实例

    # -*- coding: UTF-8 -*-
    s = 'RUNOOB'
    str(s)
    >> 'RUNOOB'
    dict = {'runoob': 'runoob.com', 'google': 'google.com'}
    str(dict)
    >> "{'runoob': 'runoob.com', 'google': 'google.com'}"
    

    6. repr(object)

    • 描述
      repr(object) 函数将对象转化为供解释器读取的形式。

    • 语法

    # -*- coding: UTF-8 -*-
    obj = {'name': 'Sampson', 'age': 18}
    repr(obj)
    >> "{'name': 'Sampson', 'age': 18}"
    
    • 参数
      object -- 对象。

    • 返回值
      返回一个对象的 string 格式。

    • 实例

    # -*- coding: UTF-8 -*-
    s = 'RUNOOB'
    repr(s)
    >> "'RUNOOB'"
    dict = {'runoob': 'runoob.com', 'google': 'google.com'}
    repr(dict)
    >> "{'runoob': 'runoob.com', 'google': 'google.com'}"
    

    细心的朋友可能已经发现了,str(object)repr(object) 无论是用法还是最终的结果都近乎一致,那么事实是否是如此呢?
    带着这个问题,我们试着去 Python 的标准库中找找答案。下面我们就来看看 datetime.date 这个类是怎么在使用这两个方法的。

    # -*- coding: UTF-8 -*-
    import datetime
    
    today = datetime.date.today()
    str(today)
    >> '2019-04-09'
    repr(today)
    >> 'datetime.date(2019, 4, 9)'
    

    至此,我们有个初步的答案。
    str(object) 的返回结果可读性强。也就是说,str(object) 的意义是得到便于人们阅读的信息,就像上面的 '2019-04-09' 一样。
    repr(object) 的返回结果应更准确。怎么说,repr(object) 存在的目的在于调试,便于开发者使用。细心的读者会发现将 repr(object) 返回的方式直接复制到命令行上,是可以直接执行的。


    7. eval(str)

    • 描述
      eval(str) 函数用来执行一个字符串表达式,并返回表达式的值。

    • 语法

    # -*- coding: UTF-8 -*-
    eval(expression[, globals[, locals]])
    
    • 参数
      expression -- 表达式。
      globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
      locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

    • 返回值
      返回表达式计算结果。

    • 实例

    # -*- coding: UTF-8 -*-
    x = 7
    eval('3 * x')
    >> 21
    
    eval('pow(2,2)')
    >> 4
    
    eval('2 + 3')
    >> 5
    
    n = 81
    eval("n + 4")
    >> 85
    

    8. tuple(s)

    • 描述
      tuple(s) 函数将列表转换为元组。

    • 语法

    # -*- coding: UTF-8 -*-
    tuple(seq)
    
    • 参数
      seq -- 要转换为元组的序列。

    • 返回值
      返回元组。

    • 实例

    # -*- coding: UTF-8 -*-
    tuple([1, 2, 3, 4])
    >> (1, 2, 3, 4)
    
    tuple({1: 2, 3: 4})  # 针对字典 会返回字典的key组成的tuple
    >> (1, 3)
    
    tuple((1, 2, 3, 4))  # 元组会返回元组自身
    >> (1, 2, 3, 4)
    

    9. list(s)

    • 描述
      list(s) 方法用于将元组转换为列表。

    • 语法

    # -*- coding: UTF-8 -*-
    list(tup)
    
    • 参数
      tup -- 要转换为列表的元组。

    • 返回值
      返回列表。

    • 实例

    # -*- coding: UTF-8 -*-
    aTuple = (123, 'xyz', 'zara', 'abc')
    list(aTuple)
    >> [123, 'xyz', 'zara', 'abc']
    

    10. set(s)

    • 描述
      set(s) 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

    • 语法

    # -*- coding: UTF-8 -*-
    set([iterable])
    
    • 参数
      iterable -- 可迭代对象对象。

    • 返回值
      返回新的集合对象。

    • 实例

    # -*- coding: UTF-8 -*-
    x = set('runoob')
    y = set('google')
    
    print x, y
    >> (set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))  # 重复的被删除
    
    print x & y
    >> set(['o'])  # 交集
    
    print x | y
    >> set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])  # 并集
    
    print x - y
    >> set(['r', 'b', 'u', 'n'])  # 差集
    

    11. dict(d)

    • 描述
      dict(d) 函数用于创建一个字典。

    • 语法

    # -*- coding: UTF-8 -*-
    dict(kwarg)
    dict(mapping, kwarg)
    dict(iterable, kwarg)
    
    • 参数
      kwargs -- 关键字
      mapping -- 元素的容器。
      iterable -- 可迭代对象。

    • 返回值
      返回一个字典。

    • 实例

    # -*- coding: UTF-8 -*-
    dict()                        # 创建空字典
    >> {}
    
    dict(a='a', b='b', t='t')     # 传入关键字
    >> {'a': 'a', 'b': 'b', 't': 't'}
    
    dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
    >> {'three': 3, 'two': 2, 'one': 1}
    
    dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
    >> {'three': 3, 'two': 2, 'one': 1}
    

    12. frozenset(s)

    • 描述
      frozenset(s) 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

    • 语法

    # -*- coding: UTF-8 -*-
    frozenset([iterable])
    
    • 参数
      iterable -- 可迭代的对象,比如列表、字典、元组等等。

    • 返回值
      返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。

    • 实例

    # -*- coding: UTF-8 -*-
    a = frozenset(range(10))     # 生成一个新的不可变集合
    print a
    >> frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    b = frozenset('runoob')     # 创建不可变集合
    print b
    >> frozenset(['b', 'r', 'u', 'o', 'n'])
    

    13. chr(x)

    • 描述
      chr(x) 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

    • 语法

    # -*- coding: UTF-8 -*-
    chr(x)
    
    • 参数
      x -- 可以是10进制也可以是16进制的形式的数字。

    • 返回值
      返回值是当前整数对应的 ASCII 字符。

    • 实例

    # -*- coding: UTF-8 -*-
    print chr(0x30), chr(0x31), chr(0x61)   # 十六进制
    >> 0 1 a
    
    print chr(48), chr(49), chr(97)         # 十进制
    >> 0 1 a
    

    14. unichr(x)

    • 描述
      unichr(x) 函数 和 chr(x) 函数功能基本一样, 只不过是返回 unicode 的字符。

    • 语法

    # -*- coding: UTF-8 -*-
    unichr(x)
    
    • 参数
      x -- 可以是10进制也可以是16进制的形式的数字。

    • 返回值
      返回 unicode 的字符。

    • 实例

    # -*- coding: UTF-8 -*-
    print unichr(97)
    >> 'a'
    print unichr(98)
    >> 'b'
    print unichr(99)
    >> 'c'
    

    15. ord(x)

    • 描述
      ord(x) 函数是 chr(x) 函数(对于8位的ASCII字符串)或 unichr(x) 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

    • 语法

    # -*- coding: UTF-8 -*-
    ord(x)
    
    • 参数
      x -- 字符。

    • 返回值
      返回值是对应的十进制整数。

    • 实例

    # -*- coding: UTF-8 -*-
    print ord('a')
    >> 97
    print ord('b')
    >> 98
    print ord('c')
    >> 99
    

    16. hex(x)

    • 描述
      hex(x) 函数用于将10进制整数转换成16进制,以字符串形式表示。

    • 语法

    # -*- coding: UTF-8 -*-
    hex(x)
    
    • 参数
      x -- 10进制整数

    • 返回值
      返回16进制数,以字符串形式表示。

    • 实例

    # -*- coding: UTF-8 -*-
    print hex(255)
    >> '0xff'
    print hex(-42)
    >> '-0x2a'
    print hex(1L)
    >> '0x1L'
    print hex(12)
    >> '0xc'
    print type(hex(12))
    >> <type 'str'>      # 字符串
    

    17. oct(x)

    • 描述
      oct(x) 函数将一个整数转换成8进制字符串。

    • 语法

    # -*- coding: UTF-8 -*-
    oct(x)
    
    • 参数
      x -- 整数。

    • 返回值
      返回8进制字符串。

    • 实例

    # -*- coding: UTF-8 -*-
    print oct(10)
    >> '012'
    print oct(20)
    >> '024'
    print oct(15)
    >> '017'
    

    相关文章

      网友评论

          本文标题:Python初学者入门随笔 03 Python 数据类型转换

          本文链接:https://www.haomeiwen.com/subject/ffqiiqtx.html