【面试题目来着微信公众号:GitChat】
综合
41.Python 常用的数据结构的类型及其特性?
42.如何交换字典 {“A”:1,“B”:2}的键和值?
def test20():
a = {"A": 1, "B": 2}
# 用字典生成式交换键和值
b = {v: k for k,v in a.items()}
print(b)
43.Python 里面如何实现 tuple 和 list 的转换?
def test21():
# 可以强制转换元组和列表
l = [1, 2, 3, 4, 5, 6]
t = ("a", "b", "c")
print(tuple(l))
print(list(t))
44.我们知道对于列表可以使用切片操作进行部分元素的选择,那么如何对生成器类型的对象实现相同的功能呢?
首先生成器直接做切片是会报错的,
我想到了两种方法,切片生成器:将生成器自己转化为列表切片,或者用itertools.islice()方法。需要注意生成器的特性:每次进行迭代时返回一个值,直到遇到StopIteration异常结束。
import itertools
# islice(iterable, stop) --> islice object
# islice(iterable, start, stop[, step]) --> islice object
def test22():
a = (i for i in range(0, 6))
# 1. 自己将生成式转换为列表,再切片,等于先将所有元素都生成了出来
print("相转化为列表再切片: %s" % list(a))
# 2. 使用itertools中的islice方法进行切片,注意生成器中的元素是抛出,抛出一个少一个
a = (i for i in range(0, 6))
print("取前两个元素: %s" % list(itertools.islice(a, 2)))
print("取前两个元素: %s" % list(itertools.islice(a, 2)))
print("取前两个元素: %s" % list(itertools.islice(a, 2)))
a = (i for i in range(0, 6))
print(list(itertools.islice(a, 0, 4)))
test22()
输出结果:
相转化为列表再切片: [0, 1, 2, 3, 4, 5]
取前两个元素: [0, 1]
取前两个元素: [2, 3]
取前两个元素: [4, 5]
[0, 1, 2, 3]
45.请将[i for i in range(3)]改成生成器
(i for i in range(3))
46.a="hello"和 b="你好"编码成 bytes 类型
def test23():
a = "hello"
b = "你好"
# 1. 用betes和str直接转换
c = bytes(a, "utf-8")
print("c:", c, type(c))
d = bytes(b, "utf-8")
print("d:", d, type(d))
# 2. 用encode方法转换
e = a.encode("utf-8")
print("e:", e, type(e))
f = b.encode("utf-8")
print("f:", f, type(f))
test23()
输出:
c: b'hello' <class 'bytes'>
d: b'\xe4\xbd\xa0\xe5\xa5\xbd' <class 'bytes'>
e: b'hello' <class 'bytes'>
f: b'\xe4\xbd\xa0\xe5\xa5\xbd' <class 'bytes'>
47.下面的代码输出结果是什么?
代码会抛出异常,元组是不可变类型,修改的这个元素的值是不可变类型,修改这个元素的值,会改变指向的内存地址,故不能修改.
Traceback (most recent call last):
File "H:/project/test_for_offer/main/test_for_offer.py", line 286, in <module>
test24()
File "H:/project/test_for_offer/main/test_for_offer.py", line 283, in test24
a[2] = 2
TypeError: 'tuple' object does not support item assignment
48.下面的代码输出的结果是什么?
元组中的元素是可变类型的话,修改这个元素的值,元素指向的内存地址是不会变的,所以可以修改.
输出:
(1, 2, 3, [2, 5, 6, 7], 8)
面试题目来着微信公众号:GitChat
Python 爬虫面试题 170 道
以上答案皆为鄙人回答,如有问题,敬请诸君指出.
【python面试170题】系列
1. 语言特性
2. 编码规范
3. 数据类型-字符串
4. 数据类型-列表、字典
5. 数据类型-综合