一 类型转换

转整形int()
转浮点数float()
转字符串str()

a=1.8
b= int(a)
print(b)#输出1

#浮点数转字符串
a=1.810100
b= str(a)
print(b)#1.8101 会去掉没有意义的0,最少保留1#列表转字符串
li=[1,2,3]
b= str(li)
print(b)#输出[1, 2, 3] 

eval()
将字符串,当成表达式执行,并返回结果,不能执行逻辑语句(if for等)
用法1 将字符串还原为数字

s = "123.5"
num = eval(s)
print(num, type(num))  # 123.5 <class 'float'>

用法2 执行数学计算

res = eval("100 * 2 + 50 / 2")
print(res)  # 225.0

用法3 将字符串还原为列表 字典等数据结构

# 字符串形式的列表
str_list = "[1,2,'wuzi',19]"
lst = eval(str_list)#将字符串还原为真正的列表
print(lst, type(lst))  # [1, 2, 'wuzi', 19] <class 'list'>

list()
将可迭代对象转为列表

li = list("123")
print(li)#输出['1', '2', '3']

#字典会只输出键
dic = {"name":"wuzi","age":3}
li= list(dic)
print(type(li)) #输出<class 'list'>
print(li)#输出['name', 'age']

二 深浅拷贝

直接赋值

数据完全共享

#copy
li = [1,2,3,4]
li2 =li
li.append(5)
print(li2)#[1, 2, 3, 4, 5]
print(id(li))#输出15798656
print(id(li2))#输出15798656  li和li2的内存地址是一样的

浅拷贝

数据半共享,只有非引用类型是不共享内存的

import copy

li = [1,2,3,4,[1,2,3]]
li2 =copy.copy(li)
#修改第一层元素,是独立的
li.append(5)
print(li)#[1, 2, 3, 4, [1, 2, 3], 5]
print(li2)#[1, 2, 3, 4, [1, 2, 3]]
#如果修改嵌套的引用类型元素,则依然共享内存
li[4].append(7)
print(li)#[1, 2, 3, 4, [1, 2, 3, 7], 5]
print(li2)#[1, 2, 3, 4, [1, 2, 3, 7]]

print(id(li))#输出16322944
print(id(li2))#输出18011136  li和li2的内存地址不同

深拷贝

两个对象完全不会影响对方

import copy
li = [1,2,3,4,[1,2,3]]
li2 =copy.deepcopy(li)

更多推荐