# #class resultPdt(object):
# #def getResult(id,opr):
# print ('a =',5)
# x,y,z = 1,2,3
# print(x,y,z)
# x,y,z = y,z,x
# print(x,y,z)
# #a,b,rest* = [1,2,3,4] //python3
#
# x = c()
# y = c()
#
# x = y
# y = c()
#
# a = 'b'
# a *= 2
# print(a)
# num = input('number?\n')
# if (num == 1):
# print ("==")
# else: print("!=")
# x=1
# y=1
# if x <= y <= z:
# print(1)
# if(x is not y): #理论上根据判断对象原则;即使x和y值相等,也不该是同一个对象啊;
# print (2)
#
# x = [1,2,3]
# y = [2,4]
# print(x is not y)
# del x[2]
# y[0] = 1
# y.reverse()
# for i in x:
# print (i)
# print(x is y)
# x = [1]
# y = [1] #地址不同
# print(x is not y) #true
# #实践证明,为列表时,是不同对象
# x = 1
# y = 1
# print(x is not y) #false 为值时为相同对象
#
# x = 2
# y = 1
# print ('第二次',x is not y) #true
# x = 1
# print (x is not y) #false 地址相同,文档提示使用is比较值和字符串不可取
# #因为python内部操作该字符串的方式不可控导致结果不可预测;那么内部操作方式又是什么?
#
# print("abc"<"aba") #按位进行字母排列顺序比较
# print(ord("a"),ord("A"),chr(54),"adFdCSEf".upper(),"adFdCSEf".upper().lower())
#
# print ([2,{1,3},4]<[2,{1,3},5]) #花括号究竟是啥玩意啊;集合set
# print ([2,[1,3],4]<[2,[1,3],5])
#
# name = input('input name')or "random" #随机名称生成;
# print (name)
#
# b = 3
# print (5 if b == 5 else 1) #b在未定义时为不可预测态,时无法比较;
#
# # 断言机制:先验
# age = -1
# assert 1<age<19 #用于检查函数和变量;不满足条件直接从这里中断掉
#
# name = ''
# while not name or name.isspace():
# name = input ("inputname?:") #or "unknown"
# print ("欢迎%s!"%name) #%s打印消除空格 #注意:依赖于缩进识别语句快;
# print ("欢迎!",name)
#
# s = 0
# for a in range(10):
# s += a
# print ("%d"%s) #循环语句块外
#
# s = 0
# for a in range(10): #range(10) =[0,1,2,3,4,5,6,7,8,9] 集合
# s += a
# print ("%d"%s) #循环语句块内,直至找到缩进为止; #xrange用法
#
# d = {'a':1,'b':2,"c":3} #字典 python单引号和双引号是否有区别?
# for key in d:
# print (key,':',d[key])
# print (key)
# print (d[key])
# print('a','b','c','d',123)
#
# 并行迭代
# name = ['a','b','c','d']
# for i in name:
# print(i)
# sex = [0,0,1,1,0,1]
#
# for i in range(len(name)):
# print (name[i],': %d'%sex[i]) #分片
# # 下方需要继续探讨修改为 for a in zip(name,sex)时,输出存疑结果的原因
# print("内建函数:")
# zip(name,sex) #压缩多个序列为一个
# for a,b in zip(name,sex):
# print(a,b)
# #
# for a,b in zip(range(5),range(5)): #python 3.0中,xrange究竟被替换成了什么
# print(a,b)
# #编号迭代
# name = ['a','b','c','d']
# for i in range(len(name)): #创建游标或者索引i
# if name[i] == 'c':
# name[i] = "e"
# for i in name: #此处i为集合或列表中的元素
# print(i)
#
# name = ['a','b','c','d']
# for i in name:
# if 'c' in i:
# idx = name.index(i) #取得含有对应元素的索引
# name[idx] = 'e'
# for i in name:
# print(i)
#
# name = ['a','b','c','d']
# idx = 0
# for i in name:
# if "c" in i:
# name[idx] = 'e'
# idx += 1 #
# for i in name:
# print(i)
# 内建函数迭代
# name = ['a','b','c','d']
# for index,n in enumerate(name): #enumerate列举出键值对;
# if 'c' in n:
# name[index] ='e'
# for i in name:
# print (i)
#
#
# name = ['e','a','b','c','d']
# s = "+" #
# name = sorted(name) #返回列表
# name = list(reversed(name)) #返回对象地址
# name = s.join(reversed(name)) #遍历列表,将s加入序列
# print(name)
#
# for while 循环中的break,continue,else语句
# from math import sqrt
# for n in range(99,81,-1):
# x = sqrt(n) #开方后结果默认为浮点数;
# if x == int(x):
# print (int(x))
# break
# else: print('not find')
# while True:
# temp = input('input value:')
# if temp.isspace():
# continue
# if not temp:
# break
# print
#
# list = [x*x for x in range(5) if x%3 == 0]
# print(list)
#
# list = [(a,b)for a in range(10)for b in range(10)]
# print(list)
#
# a = tuple()
# b = (0,1,2)
# print(a,b)
# result = []
# for x in range(3):
# for y in range(3):
# result.append((x,y))
# print(result)
#
# #字典序
# girls = ['ali','ber','cla']
# boys = ['chr','arn','bob']
# letterGirls = {}
# for i in girls:
# letterGirls.setdefault(i[0],[]).append(i)
# print([(b,g) for b in boys for g in letterGirls[b[0]]])
# #以男孩名首字母为索引,在创建的字典中中查找对应值
#
# pass
# def a():
# x = 1
# del x
# ##print(x) #移除对象名以及对象引用
#
# exec
# from math import sqrt #本段运行不成功,并且对于 scope['sqrt']存疑,因为
# # 并不是将语句字符串写入命名空间,而是仅仅将sqrt;但代码在sqrt报错
# scope = {}
# exec ("sqrt = 1") in scope
# sqrt(4)
# scope['sqrt']
# scope.keys()
#
# eval
# eval用于求值
# eval(input("evalue:")) #未能计算出结果
#
# scope = {}
# scope['x'] = 2
# scope['y'] = 3
# eval('x*y',scope) #运行有问题,不明觉厉
#
# scope = {}
# exec ('x=2' in scope)
# eval('x*x',scope) #运行有问题,不明觉厉
#
# fibs = [0,1]
# for i in range(8):
# fibs.append(fibs[-2] + fibs[-1])
# print(fibs)
#
# def fibs(num):
# '计算菲薄纳妾数列' #该函数说明语句不同于注释,它是作为函数的一部分与之一起存储的;
# fibs = [0,1]
# for i in range(num-2):
# fibs.append(fibs[-2] +fibs[-1])
# print(fibs) #没有给返回值时,会返回none
# return fibs #递归程序的运行时间较长,和C相比可见python的速度;
#
# fibs(64)
# print(fibs.__doc__) #返回函数说明语句
# help(fibs) #打印函数相关信息
#
# def change(n):
# n[0] = 1
# return print(n)
# p = [0,1]
# change(p)
# print (p)
#
# 以下两块展示了列表复制与多个指向的区别
# n = [0,1]
# x = n
# print(n is x)
# print(n == x)
#
# x = n[:] #以切片形式得到列表副本
# print(n is x)
# print(n == x)
# 字典的嵌套,下面这段不是很明确;
#
# def init(data):
# data['first'] = {}
# data['middle'] = {}
# data['last'] = {}
# return print(data)
# temp = {}
# init(temp)
#
# def lookup(data,label,name):
# return data[label].get(name)
#
# def store(data,full_name):
# names = full_name.split()
# if len(names) == 2: names.insert(1,'')
# labels = ['first','middle','last']
# for label,name inzip(labels,names):
# people =lookup(data,label,name)
# if people:
# people.append(full_name)
# else:
# data[label][name] = [full_name]
#
# 关键字参数和默认值
# def f1(name = 'unknown',greet = 'hi'):
# print('%s,%s!'%(name,greet))
# f1('hello','12')
# #参数化赋值如下,可乱序
# f1(greet = '12',name = 'HELLO')
# f1()
# f1(name = 'lx')
# f1("s") #如果只给出一个实参,那么本编译器默认匹配第一个形参,但不建议这么做,可能有其他问题
#
# 收集参数:收集其余位置
# def print_param(*params):
# print (params)
# print_param(1,2,3)
# print_param("test")
#
# def print_param(title,*params):
# print (title,params)
# print_param('params:',1,2,3)
# print_param('params:') #不提供后续参数则为空元组
#
# 关键字
# def print_param(**params):
# print (params)
# print_param(x=1,y=2)
#
# def print_param(x,y,z=3,*pospar,**key):
# print(x,y,z)
# print(pospar)
# print(key)
# print_param(1,2,3,5,6,7,foo=1,bar=2)
#
# def store (data,*prm):
# data.append(prm)
# return print(data)
# a = []
# store(a,1,2,3,4)
#
# 反向;
# def add(a,b):
# s = a+b
# print(s)
# params = (1,2)
# add (*params)
#
# def star(**kwd):
# print(kwd['name'],'is',kwd['age'],'old')
# def opstar(kwd):
# print (kwd['name'],'is',kwd['age'],'old')
# args = {'name':'Mr.Gumby','age':42}
# star(**args)
# opstar(args)
# 拼接操作符传参也可以达到差不多效果;splicing? py3应该变了吧
#
# # 参数设置练习
# def story(**key):
# return 'a''\%(job)s called%(name)s.'%key
#
# def power(x,y,*others):
# if others:
# print('other param:',others)
# return print(pow(x,y))
# def interval(start,stop = None,step = 1):
# 'range() for step > 0'
# if stop is None:
# start,stop = 0,start
# result = []
# i = start
# while i<stop:
# result.append(i)
# i += step
# return print(result)
#
# print (story(job = 'lx',name = 'py'))
#
# params = {'job':'py','name':'lzk'}
# print (story(**params))
#
# del params['job']
# print (story(job = 'tec',**params))
#
# params = (5,)*2
# print('pay attention to the next')
# print(params)
# print(*params)
#
# power(*params)
#
# interval(10)
# interval(1,5)
# interval(3,12,4)
# interval(3,7)
#
# param = (3,4,5,6)
# param2 = [3,4,5,6]
# power(*param)
# power(*param2)
# 作用域
# def combine(param):
# print(param+globals()['param'])
# param = 'cell'
# combine('shr')
# # globals()用于获取全局变量的值
#
# 重定向全局变量:·
# x = 15
# def chgglobal():
# global y
# y = 25
# y += x
# print(x,y)
# chgglobal()
# print(x) #结果为2
# # global y
# print(y)
# 递归
# def fac(n):
# if n == 1:
# return 1
# else:
# return n*fac(n-1)
# print (fac(10))
#
# #顺序序列二分查找算法
# def search(seq,number,up,low):
# if up == low:
# assert number == seq[up]
# return up
# else:
# middle = (low+up)//2
# if number>seq[middle]:
# returnsearch(seq,number,up,middle+1)
# else:returnsearch(seq,number,middle,low)
# seq = [54,23,1,5,9,4]
# seq.sort()
# print(seq)
# print(search(seq,9,up = len(seq)-1,low = 0))
#
# map(str,range(10)) #搞不懂什么玩意
#
# def func(x):
# return x.isalnum()
#
# seq = ['foo','x4l','?!','**']
# filter(func,seq) #没输出,版本问题,不管了
# seq = ['foo','x4l','?!','**']
# [x for x in seq if x.isalnum()]
#
# seq = ['foo','x4l','?!','**']
# filter(lambda x:x.isalnum(),seq) #不知道如何输出
#
# num = [1,3,5,3,2,3,33,4]
# reduce(lambda x,y:x+y,num) #以上函数(另外还有apply函数)
# 3.0以上版本已经不再支持,转移到functools模块中
#
# def add(x,y):
# return x+y
# print(add(0,1))
# pr
python3与数据结构与算法描述
最新推荐文章于 2020-09-13 19:53:09 发布
本文介绍了Python3中的数据结构和算法应用,包括变量赋值、列表操作、条件判断、循环语句、字符串比较、数据排序、字典操作以及递归和函数等。通过实例展示了如何在Python中实现各种常见的数据结构和算法,如交换变量值、列表排序、字符串比较、字典的嵌套和查找等。此外,还讨论了作用域、参数传递、函数定义以及异常处理等方面的知识。
摘要由CSDN通过智能技术生成