Python 常见的 170 道面试题(41-48 综合)

综合

41.Python 常用的数据结构的类型及其特性?
A:{1:0,2:0,3:0}
B:{"a":0, "b":0, "c":0}
C: {(1,2):0, (2,3):0}
D: {[1,2]:0, [2,3]:0}

# 答:D 因为只有可 hash 的对象才能做字典的键,列表是可变类型不是可 hash 对象,所以不能用列表做为字典的键。
42.如何交换字典 {“A”:1,“B”:2}的键和值?
s =  {"A"1,"B"2}

#方法一:
dict\_new = {value:key for key,value in s.items()}

# 方法二:
new\_s= dict(zip(s.values(),s.keys()))
43.Python 里面如何实现 tuple 和 list 的转换?

  Python 中的类型转换,一般通过类型强转即可完成 tuple 转 list 是 list() 方法 list 转 tuple 使用 tuple() 方法

44.我们知道对于列表可以使用切片操作进行部分元素的选择,那么如何对生成器类型的对象实现相同的功能呢?

   这个题目考察了 Python 标准库的 itertools 模快的掌握情况,该模块提供了操作生成器的一些方法。 对于生成器类型我们使用 islice 方法来实现切片的功能。例子如下

from itertools import islice

gen = iter(range(10)) # iter()函数用来生成迭代器
# 第一个参数是迭代器,第二个参数起始索引,第三个参数结束索引,不支持负数索引
for i in islice(gen,0,4)print(i)
45.请将[i for i in range(3)]改成生成器

  通过把列表生产式的中括号,改为小括号我们就实现了生产器的功能, 实现如下:

test = (i for i in range(3))
print(next(test))
print(next(test))
print(next(test))

# >>> 0
# >>> 1
# >>> 2
46.a="hello"和 b="你好"编码成 bytes 类型
# 字符串的前面加一个 b
a = b"hello"
# 可以使用 bytes 方法
b = bytes("你好", "utf-8")
# 使用字符串 encode 方法
c = "你好".encode("utf-8")

print(a, b, c)
47.下面的代码输出结果是什么?
a = (1,2,3,[4,5,6,7],8)
a[2] = 2

# 会返回异常,元组中的元素不可改变
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值