面试问题汇总 持续更新ing

1. python 深拷贝与浅拷贝的区别

  1. 浅拷贝:

    • 浅拷贝创建一个新的对象,但是它只复制了原始对象的引用,而不是实际的数据。
    • 当原始对象中的数据发生改变时,浅拷贝的对象也会相应地发生变化。
    • 浅拷贝通常是通过切片操作或使用copy模块中的copy()函数来实现的。
  2. 深拷贝:

    • 深拷贝创建一个完全独立的新对象,它复制了原始对象及其所有的嵌套对象的数据。
    • 当原始对象及其嵌套对象中的数据发生改变时,深拷贝的对象不会受到影响。
    • 深拷贝通常是通过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的区别

  1. 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'}
  1. 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'}
  1. 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"}
  1. 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 对象。所谓"压缩”,其实就是将这些序列中对应位置的元素重新组合,生成一个个新的元组。

当多个序列中元素个数不一致时,会以最短的序列为准进行压缩。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值