PYTHON难点
P&C#坚持
不做则已,做则必做到底,做到最后胜利。
展开
-
69.Python函数迭代器的使用
作为自己练习之用。利用函数将一个包含列表的列表整理为一维列表。def twoDfunc(theList): for sub in theList: if (isinstance(sub,list)): for e in sub: yield e else: yield su...原创 2019-09-19 07:02:50 · 121 阅读 · 0 评论 -
python类属性、实例、实例变量、继承的综合练习
这是一个关于类的综合练习。包含的知识点有类变量与实例变量;初始化函数;类的内置函数介绍;str()将数字和列表变成字符串;为实例增加类变量;类的继承等内容。class Animal: "Object about Animal."#内置函数__doc__ 所显示的内容 kind="animal"#类方法,静态变量 def __init__(self,name): ...原创 2019-02-18 22:17:02 · 486 阅读 · 0 评论 -
用python和C#打印天干地支
有c#的底子,但也不厚。python虽好,但C#不能丢。对照着学习更有挑战性,两个方面都能加深印象。一、c#代码public static List<string> tiandi(){ string[] tiangan = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛"原创 2019-02-23 16:50:21 · 1198 阅读 · 1 评论 -
C#和python中枚举的对照学习
一、C#中的枚举定义及使用enum orientation{ east, south, west, north}//2.关于枚举的类型。默认是int,但可以重新定义为enum tiangan : byte//可以为byte、short、ushort、uint、long和ulong等数值类型{ jia = 5, yi, bi...原创 2019-02-22 10:49:30 · 382 阅读 · 0 评论 -
python中以函数作为参数(回调函数)的方法
纯粹是自己学习总结之用。回调函数搭配了元组和字典。在注释中已经标明有些需要注意的细节。#以函数作为参数def func_callback(func1,args): print("调用函数:") func1(args) print("____________________")def f1(x): print("回调函数启动:",x)func_cal...原创 2019-01-31 08:43:22 · 15772 阅读 · 4 评论 -
Python列表过滤的几种方法及其闭包和类的实现
只有不断地将各种语法综合应用起来,才能够发现学习中的问题,才能够越用越熟练。今天学习了列表过滤的三种方法,然后和闭包联系起来,练习了闭包的使用。又和类练习了起来,又练习了类的使用。中间犯了不少错误,从这些错误中,深化了对闭包了类的认识。1.列表过滤的三种方法:循环法、列表解析法和filter法#1.利用循环def filterList1(*lst): b=[] for ...原创 2019-02-16 17:40:44 · 786 阅读 · 0 评论 -
python过滤列表的几种技巧
过滤列表可以用循环、列表解析以及filter等。下面以列表过滤出大于3的元素。#列表过滤的几种方法#过滤大于3的元素#1.利用循环def filterList1(*lst): b=[] for i in lst: if i>3: b.append(i) return bf1=filterList1(1,2,3,...原创 2019-02-16 12:52:20 · 6804 阅读 · 0 评论 -
python 函数嵌套的学习
函数嵌套不同于闭包,不能在函数外面使用。通过函数嵌套可以隐藏函数,使之成为私有函数。使用嵌套可以为函数增加一些附加处理,使得函数更加健壮#嵌套就是函数中的函数#通过嵌套可以使内层函数隐藏起来,使之作为私有函数。#嵌套可以为函数增加一些附加处理,能够使得函数更加健壮。def f_outer(x): def f_inner(): return x+1 ...原创 2019-02-21 19:52:18 · 429 阅读 · 0 评论 -
python函数参数的默认参数、元组参数和字典参数例解
python函数除了不带参数,带固定参数之外,还有另外三类函数参数有重要使用价值,是提升python水平需要强化的内容。它们是默认参数、元组参数和字典参数。下面举例子说明。1.默认参数即在函数定义时赋值的参数。#默认参数主要是为了减少重复输入的次数。def func_default(x,y=100,z="good"): print(x,y,z)func_default(...原创 2019-01-30 10:54:33 · 9564 阅读 · 0 评论 -
C#中关于变量的几个细节(对照python)
重新把C#捡起来,和python对照着练习。这样可能更为深刻。这里主要包括:这里主要包括:转义符字符串插入字面值下面是代码。namespace ConsoleApp1{ class Program { static void Main(string[] args) { //转义符 ...原创 2019-02-21 14:37:52 · 189 阅读 · 0 评论 -
python中nonlocal与global的例子对比
关于作用于,nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。声明全局变量,如果在局部要对全局变量修改,需要在局部也要先声明该全局变量。通过下面的例子体会一下。用python帮助文件中的例子做对照说明:#局部变量def scope_test(): def do_local(): spam="local spam" spam="test s...原创 2019-02-15 13:48:31 · 321 阅读 · 0 评论 -
python中yield的工作原理及迭代方法例解
yield是一个简单好用但又费解的语句。认真地琢磨了两天,觉得自己弄明白了。就结合着例子用自己的理解来说说吧。1.yield相当于“return”+位置信息。yield这个词本身用的就很巧妙。因为这个词“生产”和“停止”两个意思都有。yield既表示产生返回值,又表示在这个地方停下来,等待下一次循环。就是从yield返回之后开始迭代。关于这一点,必须搞清楚。第一相当于return,第二下次执行...原创 2019-02-03 17:40:08 · 762 阅读 · 2 评论 -
利用闭包保存运行环境两例
1.连续调用_list=[]for i in range(3): def func4(i): def f_closure(a): return i+a return f_closure _list.append(func4(i))for f in _list: print(f(5))输出为:2....原创 2019-02-02 11:01:25 · 186 阅读 · 0 评论 -
关于python闭包函数的几个要点
根据自己的理解,总结了4点内容1.关于闭包定义的理解。闭包在被返回时,它的所有变量就已经固定,形成了一个封闭的对象,这个对象包含了其引用的所有外部、内部变量和表达式。所以称之为闭包。闭包函数必须返回函数对象。无法像func1().bar()这样调用闭包函数,只能用如下的方法:f1=func1();f1()。这样也就隐藏了闭包函数名。#对于闭包的理解def func1(): pr...原创 2019-02-01 16:45:26 · 316 阅读 · 0 评论 -
54.C#函数参数out、ref的使用以及Python
函数参数out、ref都是向外传递参数值,以弥补返回值只有一个的缺陷。函数参数可以有多个out参数,因此这样的函数返回的数据是开放的。out和ref的区别是out不用为out参数附初值,而ref必须附初值。python可以return可以返回多个参数,一般不必要使用out和ref参数。这降低了python的难度。public static void FillArray(out int[...原创 2019-02-24 11:55:05 · 3810 阅读 · 0 评论 -
python中关于类和类继承的语句解读
1.关于类#关于类的定义class Animal(object): species="Animal"#类变量 def __init__(self, name):#类的构造函数 self.name=name#定义并赋值类变量 self.attributes=[]#定义并赋值类变量 def add_attributes(sel...原创 2019-02-14 10:52:05 · 362 阅读 · 0 评论 -
68.python类定义的几个细节
clas语句直接执行 类“私有”方法的类外调用 查看类中的方法 向对象动态添加变量class MyClass: #class语句 print("class 语句对象化后被立刻执行") def getName(self): return self.name def setName(self,name): self.n...原创 2019-09-15 08:32:19 · 146 阅读 · 0 评论 -
67.斐波那切数列的三种实现方法(递归函数、列表负数索引和自定义迭代类)
1.递归函数实现法def fibo(n): if n==0: return 0 elif n==1: return 1 else: return fibo(n-1)+fibo(n-2)2.列表负数索引法def fibo2(n): f=[0,1] for i in range(n): ...原创 2019-09-14 07:00:16 · 458 阅读 · 0 评论 -
66.python 中split切割字符串的若干技
myStr="http://www.csdn.net CSDN 专业IT技术社区"#1.不带参数,以空格划分print(myStr.split())#带一个参数,是什么就以什么划分.可以是单个字符,也可以是字符串print(myStr.split("."))print(myStr.split('sd'))#获得返回值a,b,c=myStr.split('.')print(b)...原创 2019-09-13 11:56:49 · 265 阅读 · 0 评论 -
65.利用多个返回值函数分滤出列表中不同类型的元素
#返回多个值#返回值是元组#通过类型判定过滤掉列表中的非整数元素#列表转换成字符串list1=[1,"one",2,"two",3,"three",4,"four",5,"five"]def multiRe(list): intSum=0 listStr=[] intCount=0 strCount=0 for i in list: ...原创 2019-09-13 10:35:03 · 134 阅读 · 0 评论 -
64.python妙用负数索引解斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。留个网址做参考(https://www.zhihu.com/question/28062458)。用负索引可以巧妙地计算斐波那切数列。#妙用负数索引解斐波那切数列def fibs(n): f=[0,1] for i in range...原创 2019-09-12 10:45:27 · 458 阅读 · 0 评论 -
63.python函数参数的若干技巧
1.利用列表元素为函数参数赋值def print01(s1,s2): print(s1,s2)list1=['yyy','zzz']print01(*list1)2.使用可变参数为字符串中每一个字符添加修饰def print02(*ss): for s in ss: print('<{}>'.format(s),end=' ')pr...原创 2019-09-12 09:53:25 · 216 阅读 · 0 评论 -
62.python中把列表合成字典
一、两个列表合成一个字典最快的方法是用zip、dict方法。list1=["张三",'李四','王五','赵六']list2=[23,25,45,63]list3=["学生","教师","工人","农民"]#两个列表合成字典d0={}d0=dict(zip(list1,list2))print(d0)二、多个列表合成一个字典可以用for的方法。#多个列表...原创 2019-09-11 09:18:11 · 1041 阅读 · 1 评论 -
60.Python中利用数组索引提取子数组的几个细节
#利用索引从数组从提取子数组的几个细节numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]print(numbers[2:8])#print(numbers[2:8:2])#空索引 将结束索引设置为0,以及下面的清空,均为空索引。print(numbers[2:0])print(numbers[-3:0])print(numbers[8:2...原创 2019-06-02 14:39:33 · 5351 阅读 · 2 评论 -
56.C#和python类继承中的构造函数问题
一、C#类继承中的构造函数public class Animal:Creature{ public Animal():this("马")//注意:这里是实际参数,不是对参数的定义。 { Console.WriteLine("这是Animal类"); } public Animal(string str):base(str) { ...原创 2019-03-02 14:16:15 · 270 阅读 · 1 评论 -
python类是否被实例化以及引用次数
要点:1.内置函数__str()__被重写。def __str__(self): return Animal.species+" is "+self.name2.系统sys.getrefcount(cat))获得实例cat的引用次数3.判断是否被实例化for obj in gc.get_objects():#判断是否有类被实例化 if isinstance(...原创 2019-02-20 17:38:45 · 4047 阅读 · 0 评论 -
python的类变量、实例变量和单个实例变量
python类的变量有类变量、实例变量和单个实例变量,“单个实例变量”是我的说法,更为规范的说法我还不能确切地知道。学习编程语言真是“一入编程深似海”,总是有那么多曲曲折折的坑,每一个坑都要花点时间去解决。那些编书的人,往往不知道读者到底哪儿不懂。一个细节可能就让读者琢磨半天。所以自己趁着是初学者,把自己遇到的坑,感觉到模糊的地方都先写下来。比如在使用类的时候,对于类变量和实例变量的区别就开始就不...原创 2019-02-20 16:18:41 · 914 阅读 · 1 评论 -
python类中__del__的重写及其问题
学习__del__方法。为了搞清这个方法,连带又学习了object对象、继承、字符串格式化等内容。然而到现在也是不很理解。先把理解的和不理解的摆出来,做一个初步了结。已经学习两天了,不能在这个问题上原地踏步。学习编程既要“求甚解”,又要“不求甚解”,一定要拿捏好这个度,才能把握学习的进度和学习的效果之间关系。#类对象的引用计数为0时自动调用。#一般出现在两个地方:1.手工使用del减少对象...原创 2019-02-20 11:28:06 · 3696 阅读 · 1 评论 -
Python的列表推导的几个用法
列表推动是很简练、优美的一种用法。通过列表推导,可以形成新的列表、多维列表、元组列表和字典列表。还找到一个具体的实例,就是利用列表推导算乘法口诀表。一、用列表推导建新列表、元组和字典listX,listY,listZ=[100,101,102],[1,2,3],[7,8,9]#形成新的列表list2=[x+10 for x in listX]#“x+10”后面没有逗号。#形成二...原创 2018-10-27 09:59:50 · 301 阅读 · 0 评论 -
Python的多元素操作之美
Python多元素操作简练、美观,一句顶好几句,让人看着就舒服。1.两个数值交换操作a,b=b,a2.多元素字符串操作“这是一个{},那是一个{},还有一个{}”.format(a,b,c)3.列表的多元素操作list1={1,2,3,4,5}list1=list{e*3 for e in list1}或者:list1={1,2,3,4,5}list2={e...原创 2018-10-20 23:01:14 · 158 阅读 · 0 评论 -
Python对列表操作的若干技巧
1.初始化列表#初始化列表方法1:mylist=[]for _ in range(10): mylist.append(0)print(mylist)#初始化列表方法2:mylist2=[1]*10print(mylist2)mylist3=["zzz"]*5print(mylist3) 输出是:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]...原创 2018-10-20 22:46:45 · 361 阅读 · 0 评论 -
Python 正则表达式学习(4):查找以“one”结尾,前面包含0个或多个英文字母(不能是数字或其它字符)的字符串。
需求是:查找以“one”结尾,包含0个或多个英文字母(不能是数字或其它字符)的字符串。import restr='bacdone1cdonone345dhdfgkone'p=re.compile(r'[a-zA-Z]*one')#只搜索一次m=re.match(p,str)print(m.group())#发现和此模式相匹配的所有字符串mylist=p.findall(...原创 2018-09-14 20:13:25 · 2256 阅读 · 0 评论 -
Python正则表达式学习之路(3):match及findall
import res='8431onexxer2197832wzyxyd'p=r'(\d*)([a-zA-Z]*)'#match(p,s)匹配成功一次就结束m=re.match(p,s)#返回匹配结果print(m.group())#分别返回'(\d*)([a-zA-Z]*)'中的第0组(全部),第1组、第2组。print(m.group(0))print(m.grou...转载 2018-09-14 19:58:34 · 307 阅读 · 0 评论 -
Python中用正则表达式搜索本地英汉词典,找到具有某种pattern的单词(2)
和第一篇同名文章不同的地方在于,这次可以返回带翻译的单词具体如下:import rep=re.compile(r'[a-z]*verse\b')#还可以r'[a-z]*one\b',搜索所有以one结尾的单词。#搜索th开头,n结尾的单词#p=re.compile(r'th[a-z]n\b')f=open("英汉词典.txt")result=[]for line in ...原创 2018-09-20 00:59:37 · 503 阅读 · 0 评论 -
Pyhton读取word文档
学习python的一个好处是掌握了基本知识后,想研究哪一部分,用相关模块就行了。现在我需要读取word文档的内容,所要研究的python-docx模块。这一模块的名称的“docx”。利用它打开文档,三句代码就够了。import docx#获得文档file=docx.Document("1.docx")#按照段落读取文档内容for para in file.paragraphs:...原创 2018-09-11 00:16:06 · 2623 阅读 · 0 评论 -
Python操作EXCEL表格(2),显示表格的内容
写这个博客纯属为自己学习之用,主要是自己把逻辑弄清楚。自己懂的就不解释了。弄懂一个snippet就算一个,记录下来,算是一个成绩,也方便复习。import xlrdimport xlsxwriterimport openpyxlworkbook=xlrd.open_workbook("1.xlsx")sheets=workbook.sheet_names()worksheet=w...原创 2018-09-10 21:46:51 · 1885 阅读 · 0 评论 -
Python操作EXCEL表格(1),显示表格中各表名称
import xlrdimport xlsxwriterimport openpyxlworkbook=xlrd.open_workbook("1.xlsx")sheets=workbook.sheet_names()for sheetname in sheets: print("表格的名称是:",sheetname)其中“1.xlsx”表格在同一目录下。首先要打开表格,...原创 2018-09-10 21:20:05 · 3071 阅读 · 0 评论 -
判断是否是anagram
所谓anagram,就是两个词所用的字母及其个数都是一样的,但是它们字母的位置不一样,比如abc,bac,acb。在Python中,Counter可以解决这个问题。from collections import Counterstr1,str2="abc","bca"if(Counter(str1)==Counter(str2)): print("This is anagram...原创 2018-09-17 22:40:03 · 957 阅读 · 0 评论 -
Python利用正则表达式实现两列(两个子串,表格中的两列)的互换
先看代码。import restr="功夫,熊猫"print(str)#正则表达式把字符串分成两组,以逗号隔开。#“.”表示任意字符,“*”表示任意个字符,两者组合就表示任意数的字符#两个括号表示两个任意字符,用逗号隔开p=re.compile(r"(.*),(.*)")#利用替换,将两个字符调换位置。"\1"、"\2"分别代表第一组、第二组。中间用逗号,或其它什么好隔开...原创 2018-09-17 22:17:50 · 1948 阅读 · 0 评论 -
Python对英汉词典的若干操作(#10)
从网上下载了一个英汉词典txt版,整理后放在了py文件同一目录下,取名为“英汉词典”。后面要用正则表达式处理这些单词。1.读取英汉词典前10行f=open("英汉词典.txt","r")#读取词典的前10行(0-9)for i in range(0,10): item=f.readline() print(item)2.获得字典的行数(即单词个数,每行一个单词)...原创 2018-09-12 23:04:12 · 1398 阅读 · 0 评论