1.用至少三种方式完成对列表l1的去重操作
l1 = [‘b’,‘c’,‘d’,‘b’,‘c’,‘a’,‘a’]
方法一:
l1 = ['b', 'c', 'd', 'b', 'c', 'a', 'a']
l1 = list(set(l1))
print(l1) # ['d', 'b', 'c', 'a']
方法二:会保持原来的元素顺序
l1 = ['b', 'c', 'd', 'b', 'c', 'a', 'a']
new_l = []
for i in l1:
if i not in new_l:
new_l.append(i)
print(new_l) # ['b', 'c', 'd', 'a']
方法三:
l1 = ['b', 'c', 'd', 'b', 'c', 'a', 'a']
new_l1 = []
i = 0
while i < len(l1):
if l1[i] not in new_l1:
new_l1.append(l1[i])
i += 1
print(new_l1) # ['b', 'c', 'd', 'a']
方法四:
l1 = ['b', 'c', 'd', 'b', 'c', 'a', 'a']
l1 = list({}.fromkeys(l1,None))
print(l1) # ['b', 'c', 'd', 'a']
2.关系运算
有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons = {‘jason’, ‘egon’, ‘kevin’, ‘ricky’, ‘gangdan’, ‘biubiu’}
linuxs = {‘kermit’, ‘tony’, ‘gangdan’}
1.求出即报名python又报名linux课程的学员名字集合
print(pythons&linuxs)
2.求出所有报名的学生名字集合
print(pythons|linuxs)
3.求出只报名python课程的学员名字
print(pyhthons-linuxs)
4.求出没有同时这两门课程的学员名字集合
print(pythons^linuxs)
ps:衍生小知识总结如何找出两个列表中相同元素与不同元素
list1 = [1,2,3]
list2 = [3,4,5]
# list转换为set
res1 = set(list1)
res2 = set(list2)
# 交集:相同元素
print(res1&res2)
# 对称差集:不同元素
print(res1^res2)
3.单位换算
bit、bytes、KB、MB、GB、TB、PB
8bit = 1bytes
1024bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
4.请列举出你所知道的PEP8规范
#1.子列表缩进四个空格,一个tab键
# 2.赋值等号前后空一格
# 3.每行最大长度79
# 4.各种右括号前不要加空格。
# 5.逗号、冒号、分号前不要加空格。
# 6.函数的左括号前不要加空格。如Func(1)。
# 7. 序列的左括号前不要加空格。如list[2]。
# 8.操作符左右各加一个空格,不要为了对齐增加空格。
# 9.函数默认参数使用的赋值符左右省略空格。
# 10.不要将多句语句写在同一行,尽管使用‘;’允许。
# 11.if/for/while语句中,即使执行语句只有一句,也必须另起一行。
# 注释
# 1.单行注释:在代码后面空两个,然后# 在空一格
# 2.多行注释:使用""" """ 三引号
# 3.当一段代码发生变化时,第一件事就是要修改注释!
5.阐述编码表ASCII、GBK、unicode各自特点及由来
# ASCII
来源:计算机最早起源于美国,美国人为了能够让计算机识别人类能够读懂的字符,制定的了英文与数字的对应关系,即ASCII表
特点:只记录了英文和数字的对应关系
用8位(bit)来表示一个英文字符
# GBK
来源:由于美国人制定的ASCII表只能让计算机识别英文,不能识别中文,因而,中国人设计出了一种中文和英文与数字的对于关系,即GBK表
特点:汉字、英文 跟数字的对应
1bytes来表示英文
2bytes来表示汉字
如果出现了生僻字可能还需要用3bytes甚至跟多的bytes
# unicode 万国码
来源:每个国人都有自己国家语言与数字对应的关系,每种编码都不互通,为了解决这个问题,于是就发明万国码,它兼容万国语言,并且跟之前所有国家的编码都有对应关系。
特点:所有的字符都是用2bytes来存储,英文用2bytes,中文也用2bytes