1. python 深拷贝与浅拷贝的区别
-
浅拷贝:
- 浅拷贝创建一个新的对象,但是它只复制了原始对象的引用,而不是实际的数据。
- 当原始对象中的数据发生改变时,浅拷贝的对象也会相应地发生变化。
- 浅拷贝通常是通过切片操作或使用copy模块中的copy()函数来实现的。
-
深拷贝:
- 深拷贝创建一个完全独立的新对象,它复制了原始对象及其所有的嵌套对象的数据。
- 当原始对象及其嵌套对象中的数据发生改变时,深拷贝的对象不会受到影响。
- 深拷贝通常是通过copy模块中的deepcopy()函数来实现的。
需要注意的是,深拷贝会复制整个对象的完整结构,包括所有嵌套的对象,因此深拷贝的过程可能会比较耗时和占用内存。
下面是一个示例代码,演示了深拷贝和浅拷贝的区别:
import copy
# 原始对象
original_list = [1, 2, [3, 4]]
# 浅拷贝
shallow_copy = copy.copy(original_list)
# 改变原始对象中的数据
original_list[0] = 5
original_list[2].append(6)
print(original_list) # 输出: [5, 2, [3, 4, 6]]
print(shallow_copy) # 输出: [1, 2, [3, 4, 6]]
# 深拷贝
deep_copy = copy.deepcopy(original_list)
# 改变原始对象中的数据
original_list[0] = 10
original_list[2].append(7)
print(original_list) # 输出: [10, 2, [3, 4, 6, 7]]
print(deep_copy) # 输出: [5, 2, [3, 4, 6]]
2. python中 is 和== 的区别
在Python中,“is”和“==”是两种不同的比较运算符,它们的区别在于比较的对象和方式不同。
“is”运算符用于比较两个对象的身份是否相同,即它们是否指向内存中的同一个对象。例如:
a = [1, 2, 3]
b = a # b指向a所在的内存地址
print(b is a) # 输出True,因为b和a指向同一个对象
在这个例子中,我们创建了一个列表对象并将其赋值给变量“a”,然后将“a”赋值给变量“b”。由于“b”和“a”指向同一个列表对象,因此“b is a”将返回True。
“==”运算符用于比较两个对象的值是否相等。例如:
a = [1, 2, 3]
b = [1, 2, 3] # 创建了另一个列表对象
print(a == b) # 输出True,因为a和b的值相等
3. python 中 json loads,load,dump,dumps的区别
- json.loads():
loads()
函数用于将JSON字符串解码为Python对象。它接受一个JSON字符串作为参数,并返回一个Python数据结构(通常是字典或列表)。
示例:
import json
json_string = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_string)
print(data)
# 输出: {'name': 'John', 'age': 30, 'city': 'New York'}
- json.load():
load()
函数用于从文件中读取JSON数据并将其解码为Python对象。它接受一个文件对象作为参数,并返回一个Python数据结构。
示例:
import json
with open('data.json') as file:
data = json.load(file)
print(data)
# 假设 data.json 文件内容为:{"name": "John", "age": 30, "city": "New York"}
# 输出: {'name': 'John', 'age': 30, 'city': 'New York'}
- json.dump():
dump()
函数用于将Python对象转换为JSON格式,并将其写入文件中。它接受一个Python对象和一个文件对象作为参数,并将转换后的JSON数据写入文件。
示例:
import json
data = {"name": "John", "age": 30, "city": "New York"}
with open('data.json', 'w') as file:
json.dump(data, file)
# 写入 data.json 文件中的内容为:{"name": "John", "age": 30, "city": "New York"}
- json.dumps():
dumps()
函数用于将Python对象转换为JSON格式的字符串。它接受一个Python对象作为参数,并返回一个JSON字符串。
示例:
import json
data = {"name": "John", "age": 30, "city": "New York"}
json_string = json.dumps(data)
print(json_string)
# 输出: '{"name": "John", "age": 30, "city": "New York"}'
总结:
loads()
和dumps()
主要用于处理JSON字符串和Python对象之间的转换。load()
和dump()
主要用于处理JSON文件和Python对象之间的转换。
A,B 2个列表组成一个字典
a = ['小猫','小狗','小猪']
b = [1,2,3]
# 使用zip函数
d = dict(zip(a,b))
# 使用字典推导式
result = {a:b for a,b in zip(a,b)}
# 方法三
d1 = {a[i]:b[i] for i in range(len(a))}
zip() 函数是 Python 内置函数之一,可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩"成一个 zip 对象。所谓"压缩”,其实就是将这些序列中对应位置的元素重新组合,生成一个个新的元组。
当多个序列中元素个数不一致时,会以最短的序列为准进行压缩。