str()强制类型转换

str(args)强制类型转换时,将调用参数对象args的自身str方法。通过后面的学习,我们将知道python的一切都是对象,其父类是object。object自带str方法,所以任何对象都是可以转换为字符串的。以下列举几个常见类型的字符串转换。
2进制整数类型,转换为10进制形式的字符串。
8进制整数类型,转换为10进制形式的字符串。
10进制整数类型,转换为10进制形式的字符串。
16进制整数类型,转换为10进制形式的字符串。
浮点数类型,转换为相应的字符串。 布尔类型的True转换为’True’,False转换为’False’。
表示空值None,转换为’None’。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
a = 0b101
print(type(a))
print(str(a))

b = 0o67
print(type(b))
print(str(b))

c = 0xa2f
print(type(c))
print(str(c))

d = 11
print(type(d))
print(str(d))

e = 11.2
print(type(d))
print(str(d))

f1 = True
print(type(f1))
print(str(f1))
f2 = False
print(type(f2))
print(str(f2))

g = None
print(type(g))
print(str(g))

h = (1,2,3)
print(type(h))
print(str(h))

j = [1,2,3]
print(type(j))
print(str(j))

k = {1,2,3}
print(type(k))
print(str(k))

l = {'a':1, 'b':2, 'c':3}
print(type(l))
print(str(l))

执行以上程序会输出如下结果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<class 'int'>
5
<class 'int'>
55
<class 'int'>
2607
<class 'int'>
11
<class 'int'>
11
<class 'bool'>
True
<class 'bool'>
False
<class 'NoneType'>
None
<class 'tuple'>
(1, 2, 3)
<class 'list'>
[1, 2, 3]
<class 'set'>
{1, 2, 3}
<class 'dict'>
{'a': 1, 'b': 2, 'c': 3}

list()强制类型转换

可以将可迭代的对象转换为列表。
可迭代对象包括,元组,列表,集合,字典,字符串,字节,range对象,生成器对象。

除此之外,其他的值都不能转换为list类型,否则会报错,抛出TypeError异常。

注意,list也可以转换列表本身,因为列表是可变对象,转换前后的列表不是同一个对象了。也就是说转换相当于复制了当前列表。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
a = (1,2,3)
print(type(a))
print(list(a))  # [1, 2, 3]

b = {1,2,3}
print(type(b))
print(list(b))  # [1, 2, 3]

c = {'a':1, 'b':2, 'c':3}
print(type(c))
print(list(c))  # ['a', 'b', 'c']

d = "123"
print(type(d))
print(list(d))  # ['1', '2', '3']

e = b"123"
print(type(e))
print(list(e))  # [49, 50, 51]

f = range(4)
print(type(f))
print(list(f))  # [0, 1, 2, 3]

g1 = [1,2,3]
print(type(g1))
print(g1)
print(id(g1))  # [1, 2, 3]
g2 = list(g1)  # 140242631575304, 相当于g2 = g1[:]
print(g2)      # [1, 2, 3]
print(id(g2))  # 140242631575368

h = ( i*i for i in range(4))   # 生成器表达式。
print(type(h))
print(list(h)) # [0, 1, 4, 9]

# 生成器函数
def func(args):
    for i in args:
        yield i*i

i = func([4,5,6])
print(type(i))
print(list(i))  # [16, 25, 36]

j = None
print(type(j))
print(list(j))  # 抛出TypeError异常

执行以上程序会输出如下结果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<class 'tuple'>
[1, 2, 3]
<class 'set'>
[1, 2, 3]
<class 'dict'>
['a', 'b', 'c']
<class 'str'>
['1', '2', '3']
<class 'bytes'>
[49, 50, 51]
<class 'range'>
[0, 1, 2, 3]
<class 'list'>
[1, 2, 3]
140317748504456
[1, 2, 3]
140317748504520
<class 'generator'>
[0, 1, 4, 9]
<class 'generator'>
[16, 25, 36]
<class 'NoneType'>
Traceback (most recent call last):
  File "main.py", line 48, in <module>
    print(list(j))  # 抛出TypeError异常
TypeError: 'NoneType' object is not iterable

tuple()强制类型转换

可以将可迭代的对象转换为元组。
可迭代对象包括,元组,列表,集合,字典,字符串,字节,range对象,生成器对象。

除此之外,其他的值都不能转换为list类型,否则会报错,抛出TypeError异常。

注意,tuple也可以转换元组本身,因为元组是不可变对象,转换前后的元组还是同一个对象了,没有发生变化。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
a = [1,2,3]
print(type(a))
print(tuple(a))  # (1, 2, 3)

b = {1,2,3}
print(type(b))
print(tuple(b))  # (1, 2, 3)

c = {'a':1, 'b':2, 'c':3}
print(type(c))
print(tuple(c))  # ('a', 'b', 'c')

d = "123"
print(type(d))
print(tuple(d))  # (1, 2, 3)

e = b"123"
print(type(e))
print(tuple(e))  # (49, 50, 51)

f = range(4)
print(type(f))
print(tuple(f))  # (0, 1, 2, 3)

g1 = (1,2,3)
print(type(g1))
print(g1)
print(id(g1))  # (1, 2, 3)
g2 = tuple(g1) # 140431694021184
print(g2)      # (1, 2, 3)
print(id(g2))  # 140431694021184

h = ( i*i for i in range(4))   # 生成器表达式。
print(type(h))
print(tuple(h)) # (0, 1, 4, 9)

# 生成器函数
def func(args):
    for i in args:
        yield i*i

i = func([4,5,6])
print(type(i))
print(tuple(i))  # (16, 25, 36)

j = None
print(type(j))
print(tuple(j))  # 抛出TypeError异常

执行以上程序会输出如下结果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<class 'list'>
(1, 2, 3)
<class 'set'>
(1, 2, 3)
<class 'dict'>
('a', 'b', 'c')
<class 'str'>
('1', '2', '3')
<class 'bytes'>
(49, 50, 51)
<class 'range'>
(0, 1, 2, 3)
<class 'tuple'>
(1, 2, 3)
140431694021184
(1, 2, 3)
140431694021184
<class 'generator'>
(0, 1, 4, 9)
<class 'generator'>
(16, 25, 36)
<class 'NoneType'>
Traceback (most recent call last):
  File "main.py", line 48, in <module>
    print(tuple(j))  # 抛出TypeError异常
TypeError: 'NoneType' object is not iterable

set()强制类型转换

可以将可迭代的对象转换为集合,集合内的成员是不重复的,转换后的集合去除了重复的元素。 可迭代对象包括,元组,列表,集合,字典,字符串,字节,range对象,生成器对象。

除此之外,其他的值都不能转换为set类型,否则会报错,抛出TypeError异常。

注意,set也可以转换集合本身,因为集合是可变对象,转换前后的集合不是同一个对象了。

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
a = (1,2,2,3)
print(type(a))
print(set(a))  # {1, 2, 3}

b = [1,2,2,3]
print(type(b))
print(set(b))  # {1, 2, 3}

c = {'a':1, 'b':2, 'c':3}
print(type(c))
print(set(c))  # {'b', 'c', 'a'}

d = "1232"
print(type(d))
print(set(d))  # {'1', '2', '3'}

e = b"1232"
print(type(e))
print(set(e))  # {49, 50, 51}

f = range(4)
print(type(f))
print(set(f))  # {0, 1, 2, 3}

g1 = {1,2,3}
print(type(g1))
print(g1)
print(id(g1))  # {1, 2, 3}
g2 = set(g1)   # 140348333522728, 相当于g2 = g1[:]
print(g2)      # {1, 2, 3}
print(id(g2))  # 140348332717672

h = ( i*i for i in range(4))   # 生成器表达式。
print(type(h))
print(set(h)) # {0, 1, 4, 9}

# 生成器函数
def func(args):
    for i in args:
        yield i*i

i = func([4,5,6,6])
print(type(i))
print(set(i))  # {16, 25, 36}

j = None
print(type(j))
print(set(j))  # 抛出TypeError异常

执行以上程序会输出如下结果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<class 'tuple'>
{1, 2, 3}
<class 'list'>
{1, 2, 3}
<class 'dict'>
{'b', 'c', 'a'}
<class 'str'>
{'1', '2', '3'}
<class 'bytes'>
{49, 50, 51}
<class 'range'>
{0, 1, 2, 3}
<class 'set'>
{1, 2, 3}
140348333522728
{1, 2, 3}
140348332717672
<class 'generator'>
{0, 1, 4, 9}
<class 'generator'>
{16, 25, 36}
<class 'NoneType'>
Traceback (most recent call last):
  File "main.py", line 49, in <module>
    print(set(j))  # 抛出TypeError异常
TypeError: 'NoneType' object is not iterable

转载请注明本网址。