dict和list中copy方法画图加代码解释(新),dict、set中部分方法的使用,数据类型转换

本文详细讲解了Python中dict的复制方法、扩展长度、键值获取、异常处理、set操作,以及数据类型间的转换,包括浮点数、字符串、二进制等。通过实例演示,深入理解浅拷贝与深拷贝的区别,以及如何在实际开发中灵活运用这些技巧。
摘要由CSDN通过智能技术生成

目录

1.dict和list中copy方法画图加代码解释(重新画一下)

2.dict中扩展字典长度(多种方法)

直接扩展

通过setdefault()方法

通过update()方法

3.dict中获取所有的key,获取所有的value,获取所有的item

4.dict中通过一个不存在的key去获取值(要求不报错)

5.定义空集合

6.set中,求差集,求合集,求交集(要求在原集合上操作),添加一个元素,删除一个元素(使用多种方法)

差集:difference()方法

合集:union()方法和update()方法。

交集(在原集合上操作):使用intersection_update()方法

添加一个元素:add()、update()

删除一个元素(多种方法):discard()、pop()、remove()

7.数据类型转换:

将浮点型,字符串转换成整型

将整数,字符串转成浮点型

将二进制,八进制,16进制转成10进制

将10进制转换成,二进制,八进制,16进制

将字符串转换为字节

将字节转换成字符串

将ASCII码转换为字符串

将字符串转换成ASCII码


1.dict和list中copy方法画图加代码解释(重新画一下)

代码解释如下:

list_data = [1, 2, [3, 4, 5]]
copy_list = list_data.copy()
print(copy_list)    # [1, 2, [3, 4, 5]]
print(id(copy_list))     # 2977435334528
print(id(list_data))     # 2977435238080

copy_list[0] = 10
copy_list[1] = 20
print(copy_list)    # [10, 20, [3, 4, 5]]
print(list_data)    # [1, 2, [3, 4, 5]]

copy_list[2][0] = 30
print(copy_list)    # [10, 20, [30, 4, 5]]
print(list_data)    # [1, 2, [30, 4, 5]]
print(id(copy_list[2]))     # 2977435335616
print(id(list_data[2]))     # 2977435335616

copy_list[2] = [1, 2, 3]
print(copy_list)    # [10, 20, [1, 2, 3]]
print(list_data)    # [1, 2, [30, 4, 5]]

结论:

浅拷贝:指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。

list_data和他浅拷贝产生的copy_list的id值不相等,所有说明他们是两个不同的对象。

拷贝原对象中各子对象,但不会拷贝原对象的内部的子对象的子对象。

所以当改变copy_list中的每一个元素,只改变copy_list自身;但是如果改变的是其中某个元素的子元素时,由于copy_list和list_data都引用的是这个对象,故当copy_list[2][0]改变,list_data的[2][0]的值也会改变。

2.dict中扩展字典长度(多种方法)

  • 直接扩展

# 直接添加
dict_data = {1: 'a', 2: 'b', 3: 'c'}
dict_data[4] = 'd'
print(dict_data)    # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
  • 通过setdefault()方法

# 通过setdefault()方法
dict_data = {1: 'a', 2: 'b', 3: 'c'}
print(dict_data.setdefault(4))
print(dict_data)
print(dict_data.setdefault(5, 'e'))
print(dict_data)

结果: 

  • 通过update()方法

# 通过update()方法
dict_data = {1: 'a', 2: 'b'}
dict_data.update(one=1, two=2)
print(dict_data)
dict_data.update({3: 'c'})
print(dict_data)
dict_data.update([(4, 'd')])
print(dict_data)
dict_data.update([[5, 'e']])
print(dict_data)
dict_data1 = {10: 1, 20: 2}
dict_data.update(dict_data1.items())
print(dict_data)

结果:

3.dict中获取所有的key,获取所有的value,获取所有的item

通过:

  • keys()方法获取所有的key,返回的是一个'dict_keys'类型的数据;
  • values()方法获取所有的value,返回的是一个'dict_values'类型的数据;
  • items()方法获取所有的item,返回的是一个'dict_items'类型的数据。
dict_data = {1: 'a', 2: 'b', 3: 'c'}
# 获取所有的key
print(dict_data.keys(), type(dict_data.keys()))
# 获取所有的value
print(dict_data.values(), type(dict_data.values()))
# 获取所有的item
print(dict_data.items(), type(dict_data.items()))

结果:

4.dict中通过一个不存在的key去获取值(要求不报错)

通过get()和setdefault()方法,两个方法相似,不同之处是setdefault()方法会把不存在的这个键和对应的默认值,写入dict。

dict_data = {1: 'a', 2: 'b', 3: 'c'}
print(dict_data.get(4))     # 默认值为None
print(dict_data.get(4, 'd'))     # 默认值为'd'
print(dict_data)
print(dict_data.setdefault(4))
print(dict_data.setdefault(5, 'e'))
print(dict_data)

结果:

5.定义空集合

使用内置的claer()方法:

# 定义空集合set
set_data = {1, 3, 2, 4}
set_data.clear()
print(set_data, type(set_data))     # set() <class 'set'>

6.set中,求差集,求合集,求交集(要求在原集合上操作),添加一个元素,删除一个元素(使用多种方法)

  • 差集:difference()方法

# 差集
set_data1 = {1, 3, 2}
set_data2 = {2, 4, 5}
print(set_data1.difference(set_data2))  # {1, 3}
  • 合集:union()方法和update()方法。

两者区别是union返回一个新的集合接收合集,而update是在原集合上。

# 方法一:union()
set_data1 = {1, 3, 2}
set_data2 = {2, 4, 5}
result = set_data1.union(set_data2)
print(result)  # {1, 2, 3, 4, 5}
# 方法二:update()
set_data1 = {1, 3, 2}
set_data2 = {2, 4, 5}
set_data1.update(set_data2)
print(set_data1)    # {1, 2, 3, 4, 5}
  • 交集(在原集合上操作):使用intersection_update()方法

set_data1 = {1, 3, 2}
set_data2 = {2, 4, 5}
set_data1.intersection_update(set_data2)
print(set_data1)    # {2}
  • 添加一个元素:add()、update()

# 添加一个元素
# 方法一:add()
set_data = {1, 3, 2}
set_data.add(4)
print(set_data)     # {1, 2, 3, 4}
# 方法二:update()
set_data.update({5})
print(set_data)     # {1, 2, 3, 4, 5}
  • 删除一个元素(多种方法):discard()、pop()、remove()

# 方法一:discard()方法
set_data = {1, 3, 2, 4}
set_data.discard(4)
print(set_data)     # {1, 2, 3}
# 方法二:pop()方法
set_data = {1, 3, 2, 4}
print(set_data.pop())   # 1
print(set_data)     # {2, 3, 4}
# 方法三:remove()方法
# 方法二:pop()方法
set_data = {1, 3, 2, 4}
set_data.remove(1)
print(set_data)     # {2, 3, 4}

7.数据类型转换:

将浮点型,字符串转换成整型

# 将浮点型,字符串转换成整型
float_var = 1.1
int_str_var = int(float_var)
print(int_str_var)  # 1
str_var = '1234'
# 字符串必须是整数的字符串
int_str_var = int(str_var)
print(int_str_var)  # 1234

将整数,字符串转成浮点型

int_var = 1
float_int_var = float(int_var)
print(float_int_var)  # 1.0
str_var = '12.0'
# 字符串必须是数字的字符串(整数或小数)
float_int_var = float(str_var)
print(float_int_var)  # 12.0

将二进制,八进制,16进制转成10进制

# 将二进制,八进制,16进制转成10进制
int_var = int("0b11000000", base=2)
print(int_var)  # 192
int_var = int("0o100", base=8)
print(int_var)  # 64
int_var = int("0x100", base=16)
print(int_var)  # 256

将10进制转换成,二进制,八进制,16进制

# 将10进制转换成,二进制,八进制,16进制
int_var = bin(64)
print(int_var)   # 0b1000000
int_var = oct(64)
print(int_var)   # 0o100
int_var = hex(64)
print(int_var)   # 0x40

将字符串转换为字节

str_var = '汉字'
bytes_var = bytes(str_var, encoding="utf-8")
print(bytes_var)    # b'\xe6\xb1\x89\xe5\xad\x97'

将字节转换成字符串

bytes_var = b'\xe6\xb1\x89\xe5\xad\x97'
str_var = str(bytes_var, encoding="utf-8")
print(str_var)  # 汉字

将ASCII码转换为字符串

str_var = chr(65)
print(str_var, type(str_var))  # A <class 'str'>

将字符串转换成ASCII码

str_var = "Aa"
print(ord(str_var[0]))  # 65
print(ord(str_var[1]))  # 97

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Golang_HZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值