博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记2
阅读量:3700 次
发布时间:2019-05-21

本文共 6015 字,大约阅读时间需要 20 分钟。

关于学习环境,直接去官网下载一个windows安装包,傻瓜式安装就可学习了,

(1)

python,脚本解释型语言,

字节码,意思即脚本先编译成字节码,再在python的虚拟机中运行,

动态语义,即不用显示说明是int或者strnig,直接定义,比如a = ‘4’

缩进,python用缩进来表示层次关系,你可以理解为用缩进替代了花括号{},注意不同环境tab的空格数,

#coding=utf-8,不定义编码,中文就会报错,

单行注释用#,多行注视用双引号“”

包含自己写的模块,直接import 模块名,即可,不用py后缀,

一个语句太长,需要换行,就在末尾加反斜杠\,

(2)

一切数据都是对象,是数据和方法的集合,即c++中,有时候你需要自己设计对象的属性,以及它的相关方法,

一切变量都是数据对象的一个引用,

python内部的引用计数,用于把没有被引用的变量销毁,sys.getrefcount('hey'),就会得到引用计数,

删除变量,del 变量命,

伴随一生,

type,type(a),确定变量的数据类型,

help,比如你要用time模块,可是不会用,那就可以help(time),得到帮助文档,help(time.sleep),得到更具体解释,

dir,dir(time),

作业:

help(str),查看str的帮助文档,

lstrip(),是去除字符串前面空格,

rstrip(),是去除字符串后面空格,

strip(),是去除两边的空格,

upper(),是字符串大写,

lower(),是字符串小写,

type(a),得到变量类型,

(3)

环境搭建,并运行python版hello world。

(4)

ulipad开发环境搭建,

(5)

id(a),可以得到一个唯一的标识符,你可以理解为内存地址,

type(a),得到类型,

python里一切都是指针,所以你不用再考虑指针这个问题了,

基本数据类型,不可变,变量名是对数据的引用,可以有新的引用,但是数据本身不可修改,

整形,ps:python3以后好像不区分整形和浮点了,

布尔类型,Ture,False,注意大小写,

字符串,string,

ps:

a=3,b=3,id(a)==id(b),这就是不可变的真正意思,

a=3,id(a),a=4,id(a),这里id前后不同,

基本数据结构,可变,

列表,list,a=[1,2,3],

元组,tuple,a=(1,2,3),这个特殊不可变,

字典,dict,

ps:同上面ps的操作,你就明白这里的可变是什么意思了,

python里一切皆是指针,

然后,

变量之赋值一切皆为引用,动态性与动态类型之为何不再动态,

ps:意思就是整形和字符串相加,就不再是动态,

并且int(“cccc”),就没办法强行转换,

作业:

info=‘zzz’,

info[2]='c',不能通过数组的方式直接修改值,因为字符串是不可变的,

info.replace( 'z', 'n'),通过这种方式,返回的其实是一个新值,

不同类型相加,会报错,

(6)

python默认编码ascii,主要为美国人设计,所以写中文要加#coding=utf-8,

所以出现了unicode,而它仅仅是一套标准,不同国家有不同的实现,没办法交流,

所以utf-8就出现了,其实它就是unicode的一种实现,

通过len()得到的中文长度,是英文长度的3倍,不过python3好像没这个问题,

\',转义,

字符串可以通过类似数组的方式来操作,a[1],

字符串不用,系统就会销毁,

所以"adfdf"+"sdfdf",就可能涉及字符串的创建以及销毁,特别不推荐的做法,

字符串拼接这样写,"string %s"%"pinjie",        ps:%s代表占位符,%d

或者使用str中的join()方法,

文件操作,

d=open('a.txt','w')

d.write( 'hi')

d.close()

有可以直接help(d),查找帮助文档,晕,太直接了,cool,

作业:

a=“abcd”

a[3]或者a[-1]

字符串拼接可以直接用+号来做,也可以通过%s占位符的方式来做,还可以通过join()字符串操作函数,

(7)

format的使用,

s = "this is %s %s"%("my", "iphone")

b = "this is {} {}".format("my","ipad")

c = "this is {1}{0}".format("my","ipod")

文件读写标准库,而且你可以看到这个库的源代码,

import linecache

linecache.getline("tmp.txt", 1)

作业:

c = "my name is {a}, i love {b}".format( a='pyer', b='apple')

 c = "my name is %(a)s, i love %(b)s" %{ 'a':'pyer', 'b':'apple'},注意%(a)s的这个s,

(8)

作业解答,

s[2:4]

s.replace('am','ma')

False

d=open('c:/test.txt','r')

s=d.read()

l=len(s),测试文本长度,

content.replace('\n','')用空替代换行,就是清除换行,

s='1234'

sys.getrefcount('1234'),结果等于4,

(9)

列表可以嵌套,a=[ [1,2,3], [ 4,5,6] ],然后可以仿佛数组一样调用a[0][0],

(10)

a='abc'

list(a),结果是【'a','b','c'】

range和xrange的区别,后者会生成一个对象,

一个列表推导式,

>>> [ x*x for x in range(100)][0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801]>>>

>>> [(x,y) for x in range(2) for y in range(2)][(0, 0), (0, 1), (1, 0), (1, 1)]

(11)

元组因为不可变,所以也可以保证数据的安全,

集合,因为没有顺序,所以没有办法按照索引来操作,

b = set(‘abc’),打印的话,顺序方面可能是b,a,c,

b.add(4),

b.remove(4),

b.update(),

成员关系判断,in,not in,

求交并补,去除重复,都可以,因为是集合嘛~

(12)

字典内部没有顺序,通过键来存取,键必须是不可变类型,比如字符串,

dic = {'hey':'man'}

(13)

b = [1,2,3,4,5],输出下面的结果:[1,2,3,4,5,6,7,8]

##方法1:
c = b + [6,7,8]
##方法2
b.extend([6,7,8])

列表b = [1,2,3,4,5],

输出[5,4],

print b[-1:-3:-1]

b = [23,45,22,44,25,66,78],生成所有奇数组成的列表,

print [m for m in b if m % 2 == 1],

关于集合的操作,

>>> set1 = set('123')>>> set2 = set('abc')>>> set1{'1', '3', '2'}>>> set2{'a', 'b', 'c'}>>> set1.add('abc')>>> set1{'1', '3', 'abc', '2'}>>> set1 & set2set()>>> set1 | set2{'c', 'b', '1', '3', 'abc', 'a', '2'}

##习题7:用字典的方式完成下面一个小型的学生管理系统。

##1 学生有下面几个属性:姓名,年龄,考试分数包括:语文,数学,英语得分。
##比如定义2个同学:
##姓名:李明,年龄25,考试分数:语文80,数学75,英语85
##姓名:张强,年龄23,考试分数:语文75,数学82,英语78分
studentinfo = {'liming':{'name':'李明','age':25,'fenshu':{'chinese':80,'math':75,'english':85}}}
studentinfo['zhangqiang'] = {'name':'张强','age':23,'fenshu':{'chinese':75,'math':82,'english':78}}

(14)

bin(10),得到的是对应的二进制,

hex(10),得到对应16进制,

计算硬盘的容量,比如系统给的是kb单位的大小,1024,

1024>>10,得到1,即1M,

(15)

不同数据结构相互转换,

>>> a =( 1,2,3,4)>>> a(1, 2, 3, 4)>>> a = list(a)>>> a[1, 2, 3, 4]>>> a = tuple(a)>>> a(1, 2, 3, 4)

(16)(17)

python没有switch语句,

(18)

str.swapcase(),这种方法也有,大写字母转小写,反之亦然,

>>> a = "aAsmr3idd4bgs7Dlsf9eAF">>> print( ''.join( [ s for s in a if s.isdigit()]))3479>>> #取出a中的数字,并生成一个新的字符串>>> print( '1'.join( [ s for s in a if s.isdigit()]))3141719>>>

1、join()函数

语法:  'sep'.join(seq)

参数说明

sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串

>>> a = "aAsmr3idd4bgs7Dlsf9eAF">>> a = a.lower()>>> print( dict( [ (x,a.count(x)) for x in set(a)])){'f': 2, 'd': 3, '7': 1, 's': 3, 'r': 1, 'g': 1, 'a': 3, '4': 1, 'l': 1, 'm': 1, 'i': 1, '9': 1, 'e': 1, 'b': 1, '3': 1}>>> #统计各个字母出现的次数,并以字典的形式保存,>>>

>>> a = "aAsmr3idd4bgs7Dlsf9eAF">>> a_list = list(a)>>> set_list = list( set( a_list))>>> set_list.sort( key=a_list.index)>>> #去除同一字母重复的部分,并保持原来的顺序,>>> set_list['a', 'A', 's', 'm', 'r', '3', 'i', 'd', '4', 'b', 'g', '7', 'D', 'l', 'f', '9', 'e', 'F']>>> print( ".".join( set_list))a.A.s.m.r.3.i.d.4.b.g.7.D.l.f.9.e.F>>>

去除a字符串内的数字后,请将该字符串里的单词重新排序(a-z),并且重新输出一个排序后的字符 串。(保留大小写,a与A的顺序关系为:A在a前面。例:AaBb)

请判断 'boy'里出现的每一个字母,是否都出现在a字符串里。如果出现,则输出True,否则,则输 出False.

在python命令行里,输入import this 以后出现的文档,统计该文档中,"be" "is" "than" 的出现次数。

(19)

字典若是有重复的key,取最后德,

>>> a = { 'key1':'value1', 'key2':'value2'}>>> for i in a.keys():	print(i)	key1key2>>> for i in a.values():	print(i)	value1value2>>> for i in a.items():	print(i)	('key1', 'value1')('key2', 'value2')>>> #上面的是基本的操作,下面教你如何对无序的字典进行排序
对无序的字典排序,把你希望排序的依据抽取出来用sort方法排序,在输出的时候,以排序的内容为顺序,通过键值对的联系输出另一个值,

key_list = list(a.keys())

key_list.sort()

for x in key_list:

      print x,a【x】

(20)

python是解释执行,不过函数自己是不会执行的,你得手动调用,

def a():

print('a')

return 0

a()

进阶篇,

(02)

pass代表一个空语句,但是不能像C中那样不写,

函数没有返回值,代表返回None,

(03)(04)(05)(6)(07)(8)9,10,11,12,(13)

empty。

(14)

转载地址:http://rqbcn.baihongyu.com/

你可能感兴趣的文章
计算机网络七层协议
查看>>
基本类型和引用类型
查看>>
抽象类和普通类主要有三点比较大的区别,super
查看>>
数组的基本概念
查看>>
Mybatis01(结果集封装)
查看>>
02连接池
查看>>
03MyBatis的事务管理和缓存机制
查看>>
03MyBatis动态sql
查看>>
MyBatis多表查询(一对一,一对多,多对多)
查看>>
网络编程
查看>>
Spring MVC总结
查看>>
Java必备常用操作API
查看>>
feign负载均衡
查看>>
面对挫折:给即将或已经遭受社会毒打的每一个人
查看>>
我要读的书
查看>>
中世纪判断女巫的方法总结
查看>>
Jedis的使用及SpringBoot整合Redis
查看>>
OpenCV-Python 实现两张图片自动拼接成全景图
查看>>
关于maven依赖中的scope的作用和用法
查看>>
01-Eureka是什么?
查看>>