难度指数: ★
重要指数: ★
这种题并不难,但也不简单,他考察的是你对python掌握的深度
你可以使用del 关键删除字典的键,也可以使用字典的pop方法
dic = {
'name': 'lili',
'age': 14,
'tel': '123456'
}
del dic['age']
dic.pop('tel')
print(dic)
他们的区别是什么呢?
del 只是完成删除的动作,如果键不存在,会引发KeyError异常。
字典的pop方法要复杂一点点,pop方法会返回被删除键所对应的value
print(dic.pop('tel')) # 123456
如果当被删除的键不存在时,是否引发KeyError异常,取决于如何使用该方法
print(dic.pop('phone', '98765')) # 98765
print(dic.pop('phone')) # KeyError异常
如果pop方法设置第二个参数,那么当键不存在时,则返回这个值,如果键不存在,也没有设置第二个参数,和del一样,会引发KeyError异常。
最简单的办法是用update
dict_1 = {'name': 'lili', 'tel': '1234'}
dict_2 = {'age': 14, 'tel': '5678'}
dict_1.update(dict_2)
print(dict_1)
这种合并方法,是将dict_2里的key-value对整合到dict_1中,如果有键重复的情况,则value以dict_2中的value为最终结果,字典dict_1发生改变。
如果在合并的过程中,不希望这两个字典发生改变,那么可以使用下面的方法
dict_3 = {**dict_1, **dict_2}
print(dict_3)
利用解包,实现两个字典的合并,如果有键重复,以表达式中靠后的字典里的value为准,在上面的例子中,两个字典里都有tel,以dcit_2中tel所对应的value为最终结果
难度指数: ★
重要指数: ★
这个题目考察的是对列表,集合,以及类型转换方法的运用
lst = [3, 1, 1, 4, 5, 4]
lst = list(set(lst))
print(lst)
set(lst) 返回一个集合,集合中不存在重复的元素,再使用list方法,将集合转换为列表。
难度指数: ★
重要指数: ★
这个题目考察的是字符串和bytes之间的转换
字符串转bytes类型使用encode方法,如果字符串包含中文,一定要加上encoding参数,并设置为utf-8
a = "hello"
b = "你好"
print(a.encode())
print(b.encode(encoding='utf-8'))
bytes类型转字符串,使用decode方法
str_value = "学习"
bytes_value = str_value.encode(encoding='utf-8')
print(bytes_value)
str_value = bytes_value.decode(encoding='utf-8')
print(str_value)
难度指数: ★★
重要指数: ★
列表是可变对象,元组是不可变对象,这已经是一个合格的答案,但还不够好,如果面试官问了这个问题,他想听到的,不止这些。
元组看上去和列表几乎相同,只是不能修改,那么它存在的意义是什么?
函数如果返回多个值,这些值最终将被包装成元组,而非列表。
def test():
return 3, 2
res = test()
print(res, type(res))
函数返回多个值,res的类型是元组,这样设计,可以确保没人有可以对函数的返回值进行恶意修改,这是一种保护机制,必要时,你也可以将元组作为参数传入函数,以防止函数对这个参数进行修改。
def func(*args):
print(args, type(args))
func(3, 4, 5)
定义一个支持可变参数的函数时,args的类型是元组,在函数内可以从args中依次取出传入的参数,那么同样的问题,为什么不是列表呢?还是从程序设计的角度出发,如果args被设计成列表,由于列表可以被修改,保不齐某个程序员在实现函数的时候修改了args,传入的参数被修改了,或是增加,或是减少,这样就会引发不可预知的错误。
但现在,python将其设计成元组,元组无法修改,你在函数内部无法修改传入的参数,这就保证了函数入参的安全性。
想要成为字典的key,或是存储到集合中,必须满足可hash这个条件,所有的可变对象,诸如列表,集合,字典都不能做key,但元组可以,在一些特定情境下,用元组做key,非常实用,实用场景,可以参考文章酷python---元组
难度指数: ★
重要指数: ★
这是一个非常容易回答错误的题目,给人的感觉是bool函数会将字符串False转换为bool值False, 似乎这样做更加合理,但真实的结果是True。
bool函数换换的规则非常简单,如果传入的对象等价于空,则返回False, 反之返回True。
如何理解对象等价于空呢?就是空列表,空字符串,空字节串,空集合,空元组,空字典,0, None, False,这些都等价于空,当他们作为表达式时,其结果都是False, bool函数对他们的转换结果都是False。
难度指数: ★
重要指数: ★
以下是常用的数据类型转换
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一个长整数(注意python3中没有long了,2里有) |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
最常用的,是int, float, str, list, tuple, dict, set, bool 这8个,他们是最最基础的,因此,你至少需要回答出这8个数据类型转换的函数。
难度指数: ★
重要指数: ★
负索引,也称反向索引,注意和倒排索引区分开。
正向索引从左至右开始计数,从0开始递增;反向索引从右向左开始计数,从-1开始递减。
反向索引,可以简化一些操作,比如你现在想要获取列表中倒数第二个元素,如果使用正向索引,你需要这样操作
lst = [1, 2, 3, 4, 5]
print(lst[len(lst)-2]) # 4
为了获取倒数第二个元素,你不得不先计算列表的长度,然后计算出倒数第二个元素所在的索引,如果使用反向索引,事情就变得简单了
print(lst[-2]) # 4
难度指数: ★
重要指数: ★
这是妥妥的送分题,也是妥妥的送命题,如果这个题都答不出来,基本也就被pass了
内建数据类型包括
除此以外,还有complex, 复数类型,不过几乎用不到
难度指数: ★
重要指数: ★
\n 在字符串里是换行符
print("转义\n字符")
输出的结果是
转义
字符
如果想在字符串里表示\n, 输出结果为 转义\n字符 ,该如何处理呢?有两种方法,一种是用\再次进行转义,即用另一个\ 来转义\
print("转义\\n字符")
第二种方法是在字符串前面加r, 表示原始字符串
print(r"转义\n字符")
QQ交流群: 211426309