1、数值类型转换
Python 中,数值类型转换(数值类型铸造)用于在不同数值类型之间进行转换。常见的数值类型包括整数 (int
)、浮点数 (float
) 和复数 (complex
)。
1)整数和浮点数互转:
x = 5
y = float(x)
print(y) # 输出: 5.0
x = 5.67
y = int(x)
print(y) # 输出: 5
2)整数和复数互转
x = 10
y = complex(x)
print(y) # 输出: (10+0j)
x = 10
y = complex(x)
print(y) # 输出: (10+0j)
3)布尔值和整数互转
b = True
i = int(b)
print(i) # 输出: 1
b = False
i = int(b)
print(i) # 输出: 0
# 整数 1 转换为布尔值
i = 1
b = bool(i)
print(b) # 输出: True
# 整数 0 转换为布尔值
i = 0
b = bool(i)
print(b) # 输出: False
# 非零整数转换为布尔值
i = 42
b = bool(i)
print(b) # 输出: True
注意:
将浮点数转换为整数时,小数部分会被截断,可能会导致精度损失。
x = 3.9
y = int(x)
print(y) # 输出: 3
2、字符串和数值之间的转换
Python 中,字符串和数值之间的转换是常见的操作,尤其是在处理用户输入或文件读写时。
1)字符串和整数互转
s = "123"
i = int(s)
print(i) # 输出: 123
i = 123
s = str(i)
print(s) # 输出: "123"
2)字符串和浮点数互转:
s = "123.45"
f = float(s)
print(f) # 输出: 123.45
f = 123.45
s = str(f)
print(s) # 输出: "123.45"
3)字符串和复数互转
s = "1+2j"
c = complex(s)
print(c) # 输出: (1+2j)
c = 1 + 2j
s = str(c)
print(s) # 输出: "(1+2j)"
如果字符串包含无效的复数格式,则会引发异常:
s = "1+2jabc"
try:
c = complex(s)
except ValueError as e:
print(e) # 输出: complex() arg is a malformed string
3、列表、集合和元组之间的转换
Python 中,列表、集合和元组是三种常用的容器类型,它们之间的转换可以帮助在不同场景中灵活处理数据。
1)列表和元组互转:
# 列表转换为元组
lst = [1, 2, 3, 4, 5]
tup = tuple(lst)
print(tup) # 输出: (1, 2, 3, 4, 5)
# 元组转换为列表
tup = (1, 2, 3, 4, 5)
lst = list(tup)
print(lst) # 输出: [1, 2, 3, 4, 5]
2)列表和集合互转:
lst = [1, 2, 2, 3]
s = set(lst)
print(s) # 输出: {1, 2, 3}
s = {1, 2, 3}
lst = list(s)
print(lst) # 输出: [1, 2, 3]
3)元组和集合互转
s = {1, 2, 3}
tup = tuple(s)
print(tup) # 输出: (1, 2, 3)
tup = (1, 2, 2, 3)
s = set(tup)
print(s) # 输出: {1, 2, 3}
5、字符串与其他容器类型之间的转换
Python 中,字符串可以与其他容器类型(如列表、元组、集合等)进行转换。这在处理字符数据、解析输入或生成特定格式的输出时非常有用。
1)字符串和列表互转:
s = "hello"
lst = list(s)
print(lst) # 输出: ['h', 'e', 'l', 'l', 'o']
lst = ['h', 'e', 'l', 'l', 'o']
s = ''.join(lst)
print(s) # 输出: "hello"
2)字符串和元组互转:
s = "hello"
tup = tuple(s)
print(tup) # 输出: ('h', 'e', 'l', 'l', 'o')
3)字符串和集合互转
# 字符串转换为集合
s = "hello"
char_set = set(s)
print("字符串转换为集合:", char_set) # 输出: {'e', 'h', 'l', 'o'}
# 集合转换为字符串
char_set = {'e', 'h', 'l', 'o'}
s = ''.join(char_set)
print("集合转换为字符串:", s) # 输出的字符串顺序可能是随机的,如 "ehlo"
6、Python类型转换示例代码
# int(x[, base]) 将x转换为一个整数,base为进制,默认十进制
#
# long(x[, base] ) 将x转换为一个长整数
#
# float(x) 将x转换到一个浮点数
#
# complex(real[, imag]) 创建一个复数
#
# str(x) 将对象 x 转换为字符串
#
# repr(x) 将对象 x 转换为表达式字符串
#
# 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) 将一个整数转换为一个八进制字符串
if __name__ == "__main__":
print(int(1.2)) # 1
print(int('12', 16)) # 18
print(float(1)) # 1.0
print(float('123')) # 123.0
# complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。
print(complex(1, 2)) # (1+2j)
print(complex("1")) # (1+0j)
dict1 = {'a': 'b', 'c': 'd'};
print(type(str(dict1))) # {'a': 'b', 'c': 'd'} <class 'str'>
print(eval('pow(2,2)')) # 4
print(tuple([1,2,3,4])) # (1, 2, 3, 4)
aTuple = (123, 'xyz', 'zara', 'abc');
print(list(aTuple)) # [123, 'xyz', 'zara', 'abc']
#set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等
x = set("yangs")
print(x) # {'y', 's', 'n', 'a', 'g'}
print(type(x)) # <class 'set'>
y = set('yy')
print(x & y) # 交集 {'y'}
print(x | y) # 并集 {'n', 's', 'g', 'a', 'y'}
print(x ^ y) # 非集 {'n', 'g', 'a', 's'}
print(x - y) # 差集 {'n', 'g', 's', 'a'}
print(dict(a='a', b='b', t='t')) # {'a': 'a', 'b': 'b', 't': 't'}
print(dict(zip(["a","b"], ["c","d"]))) # {'a': 'b', 'c': 'd'}
print(dict([(1, 2), (3, 4)])) # {1: 2, 3: 4}
# frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
print(frozenset("yangs")) # frozenset({'s', 'y', 'g', 'n', 'a'})
print(type(frozenset("yangs"))) # <class 'frozenset'>
#chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
print(chr(123)) # {
print(chr(48)) # '0'
print(ord('a')) # 97
print(ord('0')) # 48
# 将10进制整数转换成16进制,以字符串形式表示
print(hex(255)) # 0xff
print(hex(0)) # 0x0
#将一个整数转换成8进制字符串
print(oct(10)) # 0o12