美文网首页
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