- !/usr/bin/env python
# -- encoding: utf-8 --
# @File : test.py
# @Time : 2021/05/30 09:54:15
# @Author : zhangjia
# @Version : 1.0
# @Contact : zhangjia@aixuexi.com
# find / -name “index.“ | xargs grep “Welcome to nginx”
a = {“name”:”张三”,”性别”:”男”,”年龄”:18}
b = {“户籍”:”北京”,”地址”:”门头沟区”}
x = 0
# 1
for i in range(0,100): # 循环 1-100求和
x += i
print(x)
print(sum(range(1,100))) #sum 参数 iterable,[x,start] 可迭代对象,数组,列表,元祖,start默认为0
#2 删除字典键 del
del a[“name”]
print(a)
#3 合并字典 update
a.update(b)
print(a)
#4 python GIL 进程锁 - 全局解释器锁—-线程运行时有先后顺序的,并不是同时运行的。
# 线程在运行python程序会霸占python解释器(即GIL锁),此时其他进程无法运行,需等待该进程运行结束
# 后其他进程才运行,如果线程遇到耗时操作,则解释器锁解开,使其他线程运行,所以,线程运行时有先后
# 顺序的,并不是同时运行的。
#5 列表去重
c = [1,1,1,2,3,4,4,5,6]
c1 = set(c)
print(c1)
#6 函数中 (args,*kwargs)的意义
# 参数的数量不定
def demo(args_f,argsv):
print(argsf)
for i in argsv:
print(i)
demo(“a”,”b”,”c”,”d”) #这里传入几个参数,就处理多少参数
#7 python2和python3中的range函数区别
# python2 return list,python return interable(迭代器),更节约内存
#8 什么样的语言能够用装饰器
# 函数可以作为参数传递的语言可以使用装饰器
#9 python内建数据类型
# int 整数;bool 布尔;st 字符串;list 列表;tuple 元祖;dict 字典
#10 _init,__new
# init是初始化方法,创建对象后,会立刻被调用,可以接收参数,init有个self参数
# new 至少要有一个参数cls,用来代表当前的类,此参数在实例化时由python解释器自动识别
#11 with 方法
file = open(“./1.txt”,”wb”)
try:
file.write(“hello world”)
print(“写入成功”)
except:
pass
finally:
file.close()
#12 python 中可变数据类型和不可变数据类型,并简述原理
# 不可变数据类型:数值型、字符串型 string 和元组 tuple 不允许变量的值发生变化,
# 如果改变了变量的值,相当于是新建了一个对象,
# 而对于相同的值的对象,在内存中则只有一个对象(一个地址)
# 字符串去重并排序,去重并从小到大输出 - 字符串排序怎么搞?
e = “aaddssjkljklfajlsfjalkdsfasafadsfafffdsssfdss”
print(set(e))
#13 lambda 函数相乘
g = 10
h = 2
sum = lambda g,h:gh
print(sum(g,h))
#14 正则替换
# \d 过滤整数,a-zA-Z过滤英文
# .?d 小数
import re
j = “not fount 404 张三 18 北京”
list = j.split(“ “)
print(list)
res1 = re.findall(‘\d+|[a-zA-Z]+’,j)
for i in res1:
if i in list:
list.remove(i)
new_str = “ “.join(list)
print(res1)
print(new_str)
#15 filter 求出列表所有奇数并构造新列表
a1 = [1,2,3,4,5,6,7,8,9,10]
def fn(a1):
return a1%2==1
newlist = filter(fn,a1)
newlist = [i for i in newlist]
print(newlist)
# 列表推导式 求奇数并构造新列表
res2 = [i for i in a1 if i%2==1]
print(res2)
#16 列表合并
a_list = [1,3,5,7,9]
b_list = [2,4,6,8,10]
a_list.extend(b_list)
print(a_list)
a_list.sort(reverse=False)
print(a_list)
#17 python删除文件和linux命令删除文件方法
# python os.remove(filename) #绝对路径或相对路径
# linux rm filename #绝对路径或相对路径
#18 处理时间格式
import datetime
a_time = str(datetime.datetime.now().strftime(“%Y-%m-%d %H:%M:%S”) + ‘ 星期 ‘ + str(datetime.datetime.now().isoweekday()))
print(a_time)
#19 数据库优化查询的方法
# 外键、索引、联合查询、选择特定字段等
#20 自定义异常
def fn1(num):
try:
for i in range(num):
if i>2:
raise Exception(“当前数字大于2”)
except Exception as ret:
print(ret)
fn1(10) #调用函数了
#21 贪婪和非贪婪匹配
#1、贪婪:会把满足正则的尽可能多的往后匹配 (.)
#2、非贪婪:会把满足正则的尽可能少匹配 (.?)
a_str = “哈哈哈嘿嘿“
import re
res_tl = re.findall(“(.)“,a_str)
print(“贪婪匹配结果:”,res_tl)
res_ftl = re.findall(“(.?)“,a_str)
print(“非贪婪匹配结果:”,res_ftl)
#22 列表推导式—列表展开
td_list = [[1,2],[3,4],[5,6]]
new_td_list = [j for i in td_list for j in i]
print(new_td_list)
#还有个更骚的操作
import numpy as np
bp = np.array(td_list).flatten().tolist()
print(bp)
#23 join 操作字符串 x.join(y),x.join(z)
x_str = “abc”
y_str = “def”
z_dic = [“d”,”e”,”f”]
y_join_x = x_str.join(y_str)
x_join_z = x_str.join(z_dic)
print(y_join_x)
print(x_join_z)
#24 冒泡排序
def bubbleSort(arr):
for i in range(1, len(arr)):
for j in range(0, len(arr)-i):
if arr[j] > arr[j+1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
#25 选择排序
def selectionSort(arr):
for i in range(len(arr) - 1):
# 记录最小数的索引
minIndex = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[minIndex]:
minIndex = j
# i 不是最小数时,将 i 和最小数进行交换
if i != minIndex:
arr[i], arr[minIndex] = arr[minIndex], arr[i]
return arr
#26 TCP和UDP
# (Transmission Control Protocol,传输控制协议)
# 是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。
# 一个 TCP 连接必须要经过三次 “对话” 才能建立起来
# (User Data Protocol,用户数据报协议)
# UDP 是一个非连接的协议,传输数据之前源端和终端不建立连接,
# 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
#27 统计字符中出现字符出现的次数
#办法1
a = “helloworld”
print (“统计a中各项的个数,办法1(字典):”)
dicta = {}
for i in a:
dicta[i] = a.count(i)
print (dicta)
# 办法2
print (“统计a中各项的个数,办法2(collections的counter):”)
from collections import Counter
print(Counter(a))
# 办法3
print (“统计a中各项的个数,办法3(count方法):”)
for i in a:
print(“%s:%d” %(i,a.count(i))) #用count方法计算各项数量,简单打印出来而已
#28 交换数组中的min和max
a = [3, 4, 5, 2, 1]
a[a.index(max(a))], a[a.index(min(a))] = min(a), max(a)