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