1.举例说明zip()函数用法:
传入两个可迭代对象,将对象中的元素对应打包成一个元组,返回由这些元组组成的列表(列表长度由传入的可迭代对象最短长度确定)
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9, 10]
z = zip(a, b) # 返回 [(1, 4), (2, 5), (3, 6)]
z = zip(a, c) # 返回 [(1, 7), (2, 8), (3, 9)] 长度由最短可迭代对象确定
z = zip(*z) # zip的逆过程,还原为元组组成的列表 [(1, 2, 3), (7, 8, 9)]
2.常用sql语句:
INSERT INTO tablename (`title`, `url`, `keyword`, `updated_time`) VALUES (xx,xx,xx,xx);
# 插入表tablename xx,xx,xx,xx数据
DELETE FROM tablename; # 全删
DELETE FROM tablenaem WHERE url=xxxxxxx;# 删一个
UPDATE tablename SET title=’abc’ WHERE url=xxxxxxxx; # 改url的title为abc
SELECT * FROM tablenaem # 全查
SELECT url, title FROM tablename # 查tablename表中的url和title列
DROP TABLE IF EXISTS `xxx`; # 如果xxx这个表存在,删除xxx这个表
# 建表xxx
CREATE TABLE `xxx`(
`title` text COLLATE utf8_unicode_ci,
`url` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`keyword` text COLLATE utf8_unicode_ci,
`updated_time` datetime DEFAULT NULL,
PRIMARY KEY(‘url’) USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
# COLLATE关键字告知mysql该列的排序和比较规则
# COLLATE=utf8_unicode_ci 排序规则,_ci表示忽视大小写(准确度高,校对慢)
# USING BTREE (还有一种HASH索引) 使用BTREE索引存储
# CHARSET=utf8 默认字符集的编码
注:
一.MySQL使用索引:(BTREE索引, HASH索引)
(1)使用索引后减少了存储引擎需要扫描的数据量,加快查询速度
(2)索引可以把随机I/O变为顺序I/O
(3)索引可以帮助我们对所搜结果进行排序以避免使用磁盘临时表
BTREE索引:
B-TREE以B+树结构存储数据,大大加快了数据的查询速度
B-TREE索引在范围查找的SQL语句中更加适合(顺序存储)where全职匹配
HASH索引:
Hash索引基于hash表实现,只有查询条件精确匹配Hash索引中的所有列才会用到hash索引
存储引擎会为hash索引中的每一列都计算hash码,Hash索引中存储的即hash码,所以每次读取都会进行两次查询
Hash索引无法用于排序
Hash不适用于区分度小的列上,如性别字段
二.MySQL主键与复合主键:
主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。
主键应该遵守下面的规则:
每个表只能定义一个主键。
主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。
一个列名只能在复合主键列表中出现一次。
复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。
三.MySQL存储引擎:(InnoDB,MyISAM )
InnoDB:
它提供了事务控制能力功能,它确保一组命令全部执行成功,或者当任何一个命令出现错误时所有命令的结果都被回退
区别:
MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持,外键等高级数据库功能。
3.a = ‘hello’ 和 b = ‘你好’ 编码成bytes类型
a = b'hello'
b = b'你好'
4.[1, 2, 3] + [4, 5, 6]的结果是多少
[1, 2, 3, 4, 5, 6]
5.解释一下python中有多少种运算符(is和==、join和+的区别)
-算术运算符(+,-,*,/,%,**,//)# /-结果为小数,//-结果取整数部分
-关系运算符(==,!=,>,<,>=,<=)# 返回bool值
-赋值运算符(=,+=,-=,*=,/=,%=,**=,//=)
-逻辑运算符(and,or,not)# 返回bool值
-位运算符(&,|,^,~,>>,<<)
-成员运算符(in,not in)# 返回bool值
-身份运算符(is, is not)# 返回bool值,判断变量是否引用自一个对象id()看地址否相同
==和is的区别:
==比较的是对象的值是否相等,内部调用__eq__(),可重载
is比较的是对象的身份,使用id()查看地址是否相同,不能重载
join 和 + 的区别(拼接字符串):
join先计算字符操作的空间大小在申请内存完成拼接,O(n)
+ 多个字符串每拼接一次会申请一个内存,时间复杂度O(n^2)
6.怎么移除一个字符串中的空格?
s = ' 123'
s.lstrip() # '123'
s = '123 '
s.rstrip() # '123'
s = ' 123 '
s,strip() # '123'
strip()默认删除字符串前后的空格和换行符,也可以指定要删的字符
7.字符串大小写转换?
s = 'I love you'
s.lower() # 全小写
s.upper() # 全大写
s.tit