参考自:https://cloud.tencent.com/developer/article/1490616(题目来源)
部分答案来源:
https://blog.csdn.net/weixin_46348799/article/details/108927401
所有题目
数据类型-综合
41.Python 常用的数据结构的类型及其特性?
**数值数据类型**
整数类型(int)
布尔类型(bool)
浮点类型(float)
复数类型(complex)
**可变数据类型(列表、字典、可变集合)**
直接对数据结构对象的内容进行修改
只对同一个对象进行操作
**不可变数据类型(数字、字符串、元组、不可变集合)**
不能对数据结构对象的内容进行修改操作
新旧对象两者引用两个不同的id地址值
具体参考:https://www.cnblogs.com/jingxuan-li/p/9950986.html
42.如何交换字典 {“A”:1,“B”:2}的键和值
s = {"A":1,"B":2}
法1:
new_s={value:key for key,value in s.items()}
法2:
new_s2= dict(zip(s.values(),s.keys()))
43.Python 里面如何实现 tuple 和 list 的转换?
list()#将tuple转换为list
tuple()#将list转换为tuple
44.我们知道对于列表可以使用切片操作进行部分元素的选择,那么如何对生成器类型的对象实现相同的功能呢?
使用Python 标准库的 itertools 模快,该模块提供了操作生成器的一些方法。 对于生成器类型我们使用 islice 方法来实现切片的功能。
from itertools import islice
gen = iter(range(10)) #iter()函数用来生成迭代器
#第一个参数是迭代器,第二个参数起始索引,第三个参数结束索引,不支持负数索引
for i in islice(gen,0,5):
print(i)
0
1
2
3
4
45.请将[i for i in range(3)]改成生成器
(i for i in range(3))
#生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
#迭代器是一个可以记住遍历的位置的对象。
#迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
46.a="hello"和 b="你好"编码成 bytes 类型
a = b"hello" #字符串前加个b表示转换为bytes类型
b = bytes("你好", "utf-8")#或者使用bytes函数
c = "你好".encode("utf-8")#使用encode转码
print(a, b, c)
47.下面的代码输出结果是什么?
a = (1,2,3,[4,5,6,7],8)
a[2] = 2
TypeError: 'tuple' object does not support item assignment
#元组里的元素(针对不可变类型)是不能改变的(与48题对比来看)
48.下面的代码输出的结果是什么?
a = (1,2,3,[4,5,6,7],8)
a[3][0] = 2
#结果:
(1,2,3,[2,5,6,7],8)
#如果元组里面元素本身就是可变类型,比如列表,那么在操作这个元素里的对象时,其内存地址也是不变的。
#a[3] 对应的元素是列表,然后对列表第一个元素赋值,所以最后的结果是: (1,2,3,[2,5,6,7],8)