文章目录
- 1、实现一个方法get_missing_letter()来输出一个全英字符串缺少的字母
- 2、python变量的作用域(变量查找顺序)
- 3、'123'转换成123(不使用内置api)
- 4、map函数
- 5、numpy & list
- 6、统计一个文本中单词频数最高的10个单词
- 7、合并两个有序列表(不可使用extend)
- 8、描述一下Flask
- 9、比较Django与Flask
- 10、Django,Pyramid和Flask之间的差异
1、实现一个方法get_missing_letter()来输出一个全英字符串缺少的字母
def get_missing_letter(string):
s1 = set(string.lower())
s2 = set("abcdefghijklmnopqrstuvwxyz")
letter = "".join(sorted(s2 - s1))
return letter
print(get_missing_letter("python java c"))
其中生成26个字母的方法有:
import string
letters = string.ascii_lowercase
print(letters)
letters = "".join(map(chr, range(ord('a'), ord('z')+1)))
print(letters)
2、python变量的作用域(变量查找顺序)
【LEGB】
L —— local函数内部作用域
E —— enclosing函数内部与内嵌函数之间
G —— global全局作用域
B —— build-in 内置作用
3、'123’转换成123(不使用内置api)
【法一】利用str函数
def convert(s):
num = 0
for i in s:
for j in range(10):
if i == str(j):
num = num * 10 + j
return num
【法二】利用ord函数
def convert(s):
num = 0
for i in s:
num = num * 10 + ord(i) - ord('0')
return num
【法三】利用eval函数
def convert(s):
num = 0
for i in s:
t = "%s * 1" % i
n = eval(t)
num = num * 10 + n
return num
【法四】利用ord和reduce
reduce() 函数是functools模块中的一个函数,其作用是对参数序列中元素进行累积,返回值是一个数值
from functools import reduce
def convert(s):
return reduce(lambda num, v: num * 10 + ord(v) - ord('0'), s, 0)
4、map函数
map函数会根据提供的函数对指定序列做映射。其中第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
5、numpy & list
numpy相较于list的优点 :减少内存使用、快速且方便
6、统计一个文本中单词频数最高的10个单词
【法一】
import re
def test(file_path):
distone = {}
with open(file_path)as f:
for line in f:
line = re.sub("\w+", "", line)
lineone = line.split()
for keyone in lineone:
if not distone.get(keyone):
distone[keyone] = 1
else:
distone[keyone] += 1
num_ten = sorted(distone.items(), key=lambda x: x[1], reverse=True)[:10]
num_ten = [x[0] for x in num_ten]
return num_ten
【法二】
import re
from collections import Counter
def test2(file_path):
with open(file_path)as f:
return list(map(lambda c: c[0], Counter(re.sub("\w+", "", f.read()).split()).most_common(10)))
7、合并两个有序列表(不可使用extend)
def loop_merge_sort(l1, l2):
tmp = []
while len(l1) > 0 and len(l2) > 0:
if l1[0] < l2[0]:
tmp.append(l1[0])
del l1[0]
else:
tmp.append(l2[0])
del l2[0]
while len(l1) > 0:
tmp.append(l1[0])
del l1[0]
while len(l2) > 0:
tmp.append(l2[0])
del l2[0]
return tmp
l1 = [1, 2, 6, 8]
l2 = [2, 3, 5]
print(loop_merge_sort(l1, l2))
8、描述一下Flask
Flask是基于“Werkzeug,Jinja2和良好意图”BSD许可证的Python网络微框架。Werkzeug和Jinja2是它的两个依赖项。这意味着它对外部库几乎没有依赖性。它使框架轻松,同时有一点依赖更新和更少的安全漏洞。会话基本上允许您记住从一个请求到另一个请求的信息。在一个Flask中,会话使用签名的cookie,以便用户可以查看会话内容并进行修改。如果只有密钥Flask.secret_key,则用户可以修改会话。
9、比较Django与Flask
Django和Flask将Web浏览器中键入的URL或地址映射到Python中的函数。
与Django相比,Flask要简单得多,但Flask并没有为你做很多事情意味着你需要指定细节,而Django为你做了很多事情,你不需要做太多工作。
Django由预编写的代码组成,用户需要分析这些代码,而Flask则允许用户创建自己的代码,因此,使代码更容易理解。从技术上讲,两者都同样好,都有自己的优点和缺点。
10、Django,Pyramid和Flask之间的差异
Flask是一个“微框架”,主要用于具有更简单要求的小型应用程序。在烧瓶中,您必须使用外部库。Flask已准备好使用。
Pyramid适用于大型应用程序。它提供了灵活性,并允许开发人员为他们的项目使用正确的工具。开发人员可以选择数据库,URL结构,模板样式等。金字塔是可配置的。
Django也可以像Pyramid一样用于更大的应用程序。它包括一个ORM。