文章目录
- 1 如何在Python中管理内存?
- 2 什么是python模块?Python中有哪些常用的内置模块?
- 3 Python中的== 局部变量和全局变量 ==是什么?
- 4 什么是Python中的类型转换?
- 5 什么是__init__?
- 6 什么是lambda函数?
- 7 Python中的self是什么?
- 8 区分break,continue和pass?
- 9 [:: - 1}表示什么?
- 10 如何在Python中随机化列表中的元素?
- 11 什么是python迭代器?
- 12 python中的生成器是什么?
- 13 什么是可迭代对象?
- 14 为什么使用* args,** kwargs?
- 15 如何将值添加到python列表?
- 16 如何删除python列表的值?
- 17 深拷贝和浅拷贝有什么区别?
- 18 如何在Python中实现多线程?
- 19 一行代码实现1--100之和
- 20 字典如何删除键和合并两个字典
- 21 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数
- 22 python中生成随机整数、随机小数、0--1之间小数方法
- 23 用正则匹配出标签里面的内容(“中国”),其中class的类名是不确定的
- 24 python中断言方法举例
- 25 列出python中可变数据类型和不可变数据类型,并简述原理
- 26 s = "ajldjlajfdljfddd",去重并从小到大排序输出"adfjl"
- 27 字典根据键从小到大排序
- 28 字符串a = "not 404 found 张三 99 深圳",每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"
- 29 filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 30 两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]
- 31 举例说明异常模块中try except else finally的相关意义
- 32 举例说明zip()函数用法
- 33 写5条常用sql语句
- 34 list=[2,3,5,4,9,6],从小到大排序,不许用sort,输出[2,3,4,5,6]
- 35 请将[i for i in range(3)]改成生成器
- 36 举例sort和sorted对列表排序,list=[0,-1,3,-10,5,9]
- 37 对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函数从小到大排序
- 38 列表嵌套字典的排序,分别根据年龄和姓名排序
- 39 递归求和 1到100的数和
- 40 python字典和json字符串相互转化方法
- 41 统计字符串中某字符出现次数
- 42 str=' hello world '用两种方法去空格
- 43 a+文件打开模式直接读取为什么读取不到东西
- 44 常见的网络传输协议
- 45 什么是md5,sha,作用是什么
- 46 python 操作mysql数据应该使用什么模块?
- 47 python 操作 redis数据库应该使用什么模块?
- 48 利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法
- 49 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']
- 50.is和==的区别?
- 51.两种方法去字符串空格
- 52.正则匹配不是以4和7结尾的手机号
- 53.正则表达式匹配第一个URL
- 54.正则表达式匹配出
1 如何在Python中管理内存?
(1)引用计数
(2)分代回收
(3)标记清除
2 什么是python模块?Python中有哪些常用的内置模块?
在Python程序中,每个.py文件都可以视为一个模块,
通过在当前.py文件中导入其它.py文件,可以使用被导入文件中定义的内容,例如类、变量、函数等
time
random
sys
json
re
os
datetime
3 Python中的== 局部变量和全局变量 ==是什么?
局部变量:作用于一定范围的变量
定义在函数内部的变量称为局部变量(函数的形参也是局部变量),
局部变量只能在函数内部使用,只有在函数调用时才能够被创建,在函数调用之后会动销毁。
全局变量:所有地方都能用到的变量
定义在函数外部,模块内部的变量称为全局变量,所有的函数都可以直接访问全局变量(但函数内部不能将其直接赋值
4 什么是Python中的类型转换?
对象从一种数据类型到另一种数据类型的转换
5 什么是__init__?
类的构造函数
一、类实例化时触发
二、自建包的时候用到,告诉这个文件夹是包
6 什么是lambda函数?
匿名函数
7 Python中的self是什么?
== 对象 ==
8 区分break,continue和pass?
一、== break 语句负责终止使用它的循环。跳出当前循环
二、当 continue ==语句在循环结构中执行时,并不会退出循环结构,跳出当次循环,而是立即结束本次循环,重新开始下一轮循环,也就是说,跳过循环体中在continue语句之后的所有语句,继续下一轮循环。
三、Python == pass ==语句在循环、函数、类和if语句中用作占位符,不做任何事情,是一个空操作。
9 [:: - 1}表示什么?
倒序
10 如何在Python中随机化列表中的元素?
shuffle()
11 什么是python迭代器?
迭代器:能被next函数不断调用,并不断返回下一个值。list、set、dicts通过iter()转换的
12 python中的生成器是什么?
生成器:是一种特殊的迭代器,只有列表生成式和函数yield返回生成的才是生成器
13 什么是可迭代对象?
可迭代对象:所有能被for循环遍历的。如:range(100),{1,2,3,4}
14 为什么使用* args,** kwargs?
*args,**kwargs这两个基本可以代替所有参数,
有时候不确定函数要几个参数,也不确定参数的格式
15 如何将值添加到python列表?
append()
- 会创建新的内存空间
extend()
insert()
16 如何删除python列表的值?
pop()
remove ()
del ()
clear()
17 深拷贝和浅拷贝有什么区别?
首先深拷贝和浅拷贝都是对原对象的拷贝,都会生成一个看起来相同的对象,本质区别就是拷贝出来的对象的「地址」是否与原对象一样,即就是对原对象的地址的拷贝,还是值的拷贝
== 深拷贝 :对原对象的地址的拷贝,新拷贝了一份与原对象不同的地址的对象,修改对象中的任何值,都不会改变深拷贝的对象的值。
== 浅拷贝 :对原对象的值的拷贝,地址仍是一个指针指向原对象的地址,浅拷贝或者原对象的值发生变化,那原对象和浅拷贝对象的值都会随着被改变。
== 浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用
== 深拷贝(深度克隆):不仅复制对象的基本类,同时也复制原对象的对象,完全是新对象产生的
1.copy.copy 浅拷贝——只拷贝对象,不会拷贝对象的引用对象,不会拷贝原始对象的内部的
2.copy.deepcopy 深拷贝——拷贝对象的值类型,还拷贝了原始对象,而产生了一个新的对象,不仅仅只拷贝了原始对象的引用
import copy
from copy import deepcopy,copy
l = [1,2,3,[4,5,6]]
l1 = copy(l)
l2 = deepcopy(l) #深拷贝一点影响都没有
# print(l1,l2)
l[-1].append(123)
l.append(456)
print(l,l1,l2)
结果:[1, 2, 3, [4, 5, 6, 123], 456] [1, 2, 3, [4, 5, 6, 123]] [1, 2, 3, [4, 5, 6]]
18 如何在Python中实现多线程?
Python中的多线程可以通过导入threading模块来实现。
19 一行代码实现1–100之和
方法一
print(sum(range(1,101)))
方法二
from functools import reduce
print(reduce(lambda x,y:x+y,range(101)))
结果:5050
20 字典如何删除键和合并两个字典
pop ()
update ()
21 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数
方法一
def get_data(x):
return x**2
lists = [1,2,3,4,5]
print(list(map(get_data,lists)))
结果:[1, 4, 9, 16, 25]
方法二
lists = [y for y in map(lambda x:x**2,[1,2,3,4,5])if y >10]
print(lists)
结果:[16, 25]
方法三
def square(x):
return x**2
res = map(square,[1,2,3,4,5])
res = [i for i in res if i > 10]
print(res)
22 python中生成随机整数、随机小数、0–1之间小数方法
random.randint(1,10)
random.random()
random.random()
23 用正则匹配出标签里面的内容(“中国”),其中class的类名是不确定的
方法一
import re
source = '<div class="nam">中国</div>'
demo = re.compile('<div class="\w+">(\w+)</div>')
result = demo.findall(source)
print(result)
结果:['中国']
方法二
import re
str = '<div class="nam">中国</div>'
result = re.findall(r'<div class=".*">(.*?)</div>',str)
print(result)
结果:['中国']
方法三
re.complie是将正则表达式编译成一个对象,加快速度并重复使用
import re
title = "你好,hello,世界!"
res = re.compile(r'[\u4e00-\u9fa5]+')
result = res.findall(title)
print(result)
结果:['你好', '世界']
24 python中断言方法举例
使用assert断言
assert 3>4
和raise ValueError差不多
if 3<4:
raise ValueError('你错了')
a = 2
assert (a>1)
print('断言成功,程序继续向下执行')
b = 2
assert (b>3)
print('断言失败,程序报错') #AssertionError
python的assert是用来检查一个条件,如果他为真,就不做任何事
如果他为假,则会抛出AssertionError并且包含错误信息
25 列出python中可变数据类型和不可变数据类型,并简述原理
dict list set int float bool tuple str
26 s = “ajldjlajfdljfddd”,去重并从小到大排序输出"adfjl"
s = "ajldjlajfdljfddd"
print(''.join(sorted(set(s))))
结果:adfjl
27 字典根据键从小到大排序
dic={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
result = dict(sorted(dic.items(),key=lambda x:x[0])) #x:x[0]传进来取前面的值
print(result)
结果:{'age': 18, 'city': '深圳', 'name': 'zs', 'tel': '1362626627'}
28 字符串a = “not 404 found 张三 99 深圳”,每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"
方法一
import re
a = "not 404 found 张三 99 深圳"
result = re.sub('[a-zA-Z0-9]','',a) #把数字大小写字母全部替换成空的,替换对象是a
print(result.strip())
结果:张三 深圳
方法二
import re
a='not 404 found 张三 99 深圳'
li = a.split(' ')
print(li) #结果:['not', '404', 'found', '张三', '99', '深圳']
res = re.findall('\d+|[a-zA-Z]+',a) #\d匹配数字,|[]中匹配单词,+连接多个匹配方式
for i in res:
if i in li:
li.remove(i)
new_str = ' '.join(li)
print(res) #结果:['not', '404', 'found', '99']
print(new_str) #结果:张三 深圳
29 filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方法一
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
l = [y for y in filter(lambda x:x%2==1,a)]
print(l)
结果:[1, 3, 5, 7, 9]
方法二
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def fun(a):
return a%2==1
list1 = filter(fun,a)
list2 = list(list1) #等价于list2=[i for i in list2]
print(list2)
结果:[1, 3, 5, 7, 9]
30 两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]
方法一
l1 = [1,5,7,9]
l2 = [2,2,6,8]
print(sorted(l1+l2))
结果:[1, 2, 2, 5, 6, 7, 8, 9]
方法二
l1 = [1,5,7,9]
l2 = [2,2,6,8]
l1.extend(l2) #合并添加
print(l1) #结果:[1, 5, 7, 9, 2, 2, 6, 8]
l1.sort() #排序
print(l1) #结果:[1, 2, 2, 5, 6, 7, 8, 9]
方法三
for a,b in zip(l1,l2):
print(a,b)
结果:
1 2
5 2
7 6
9 8
31 举例说明异常模块中try except else finally的相关意义
try:
print(aaa)
except:
print(123)
else:
print(456)
finally: #不管是否执行成功都要打印
print("over")
结果:
123
over
如果try执行不成功,那么顺序就是except finally
如果try执行成功,那么顺序就是try else finally
32 举例说明zip()函数用法
my_list = [11,12,13]
my_tuple = (21,22,23)
print([x for x in zip(my_list,my_tuple)]) #打包
结果:[(11, 21), (12, 22), (13, 23)]
33 写5条常用sql语句
select * from table
insert into table(字段) values("值")
update table set 字段='值'
delete from table
select * from table where id in (select id from table)
34 list=[2,3,5,4,9,6],从小到大排序,不许用sort,输出[2,3,4,5,6]
方法一
l12=[2,3,5,4,9,6]
l121=[]
for i in range(0,100):
if i in l12:
l121.append(i)
print(l121)
lists = [4,2,8,7,9,3,6,5]
方法二:冒泡排序
for j in range(len(lists)-1):
flag = 0
for i in range(len(lists)-1-j):
if lists[i]>lists[i+1]:
lists[i],lists[i+1] = lists[i+1],lists[i]
flag = 1
if flag==0:
break
print(lists)
结果:[2, 3, 4, 5, 6, 7, 8, 9]
35 请将[i for i in range(3)]改成生成器
a = (i for i in range(3))
print(type(a))
36 举例sort和sorted对列表排序,list=[0,-1,3,-10,5,9]
list=[0,-1,3,-10,5,9]
a = sorted(list) #创建新的
print(a)
list=[0,-1,3,-10,5,9]
list.sort() #作用于原来的
print(list)
37 对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函数从小到大排序
foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4]
h= lambda x :sorted(x)
print(h(foo))
结果:[-20, -5, -4, -4, -2, 0, 2, 4, 8, 8, 9]
38 列表嵌套字典的排序,分别根据年龄和姓名排序
39 递归求和 1到100的数和
def get_data(n):
if n==1:
return 1
else:
return n+get_data(n-1) #100、99、98....1
print(get_data(100))
结果:5050
40 python字典和json字符串相互转化方法
import json
dict = {'hello':123}
jsons = json.dumps(dict) #字典转json字符串
print(jsons)
print(json.loads(jsons)) #转回
结果:
{"hello": 123}
{'hello': 123}
41 统计字符串中某字符出现次数
count()方法
str = "李白 45 李白 hello world 杜甫"
res = str.count("李白")
print(res) #结果:2
42 str=’ hello world '用两种方法去空格
方法一
str.replace(' ','')
方法二
import re
result = re.sub('\s','',str)
方法三
print(''.join(str.split(' ')))
43 a+文件打开模式直接读取为什么读取不到东西
seek()
44 常见的网络传输协议
http
https
45 什么是md5,sha,作用是什么
我们最常用的是sha1加密,md5和sha1都是不可逆的
== md5 ==去重,根据字节去重
46 python 操作mysql数据应该使用什么模块?
pymysql mysqlclient
47 python 操作 redis数据库应该使用什么模块?
48 利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法
strs = 'tashiyigedashiren,tajiushiliuzongyuantt'
def hello(strs,h='all',s=' '):
while h=='l' or h=='all': #左边或者全部
if strs[0]==s:
strs = strs[1:]
else:
break
while h=='r' or h=='all': #右边或者全部
if strs[-1]==s:
strs=strs[:-1]
else:
break
return strs
print(hello(strs,h='r',s='t')) #去除右边的t
结果:
tashiyigedashiren,tajiushiliuzongyuan
49 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]
data = ['adam', 'LISA', 'barT']
print(list(map(str.title,data)))
结果:['Adam', 'Lisa', 'Bart']
50.is和==的区别?
is 是检查两个对象是否指向同一块内存空间,而 == 是检查他们的值是否相等。
可以看出,is 是比 == 更严格的检查,is 返回True表明这两个对象指向同一块内存,值也一定相同。
51.两种方法去字符串空格
方法一
str = "hello world, 世界"
res = str.replace(" ","")
print(res) #结果:helloworld,世界
方法二
list = str.split(" ")
res = "".join(list)
print(res) #结果:helloworld,世界
52.正则匹配不是以4和7结尾的手机号
#电话号码是虚拟的
import re
tels = ["13100001234","18912344321","10076","18800007777"]
for tel in tels:
ret = re.match("1\d{9}[0-3,5-6,8-9]",tel)
if ret:
print("想要不是以4和7结尾的手机号是:",ret.group())
else:
print("%s:不是想要的手机号" % tel)
# 结果:
13100001234:不是想要的手机号
想要不是以4和7结尾的手机号是: 18912344321
10076:不是想要的手机号
18800007777:不是想要的手机号
53.正则表达式匹配第一个URL
findall结果无需加group(),search()需要加group()提取
import re
s = '<imng data-original="https://rpic.douyucdn.cn/appCovers/2016/11/13/124871_23424435_small.jpg"'\
'src="https://rpic.douyucdn.cn/appCovers/2016/11/13/124871_23424435_small.jpg" style="display: incline;">'
#re.findall在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
#注意: match和search是匹配一次,findall匹配所有。
res = re.findall(r"https://.*?.jpg",s)[0]
print(res)
结果:
https://rpic.douyucdn.cn/appCovers/2016/11/13/124871_23424435_small.jpg
#re.search扫描整个字符串并返回第一个成功的匹配。匹配成功re.search方法返回一个匹配的对象,否则返回None。
res = re.search(r"https://.*?.jpg",s)
print(res.group())
结果:
https://rpic.douyucdn.cn/appCovers/2016/11/13/124871_23424435_small.jpg
54.正则表达式匹配出
==
www.itcast.cn
==import re
labels = ["<html><h1>python编程:887934385</h1></html>","<html><h1>python编程:789534385</h1></html>"]
for label in labels:
ret = re.match(r"<(\w*)><(\w*)>.*?</\2></\1>",label)
if ret:
print("%s 是符合要求的标签"%ret.group())
else:
print("%s 不符合要求的标签" % label)
结果:
<html><h1>python编程:887934385</h1></html> 是符合要求的标签
<html><h1>python编程:789534385</h1></html> 是符合要求的标签
import re
labels = '"<html><h1>python编程:887934385</h1></html>","<html><h1>python编程:789534385</h1></html>"'
ret = re.findall(r"<(\w*)><(\w*)>(.*?)</\2></\1>",labels)
print("%s 是符合要求的标签"% ret)
结果:[('html', 'h1', 'python编程:887934385'), ('html', 'h1', 'python编程:789534385')] 是符合要求的标签