一/python主要思想
1 python的重要思想 一切皆是对象
2 python主要采用缩进的方式进行运行,所以一定要注意缩进,防治出现错误,缩进一般要求4个空格,虽然可以用Tab代替,但是尽量使用空格,因为会减少一部分错误,重点是推荐使用4个空格的形式
3 基本类型有字典(dict),元组(typle),字符串(str),列表(list),之间基本都可共通,现在我已知的有str转dict之间不可直接转换,但是可以用veal()进行转换(ps 这个函数是一个神奇的函数,基本可以自动识别进行转换)
4 print,是最开始接触的格式化输出的代码,他的含义是打印出来,在python枕边书中说,在python中print可以理解为一个打印机,所见即所得
5 % 字符是起到标记的作用,提示大家可以在下一步进行注意,要进行转换了
! /usr/bin/env python#coding:utf-8
"\"意思是转义符,就代表之后的转义,代表性的有\n(换行),\'后面备注(')',\t(制表符)
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容
二
变量
变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言
三 除法
在python中除法也是用/表示,但是需要注意的是,/是浮点除,就是有余数,如果有小数,
而//则是地板除,意思就是不带余数,只求整数
与之相对应的是余数除法,就是只算余数 % .
字符串
要计算str包含多少个字符,可以用len()函数:
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
encode就是讲对应的文字改成某种编码,例如
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
其中assii无法读取中文
五 占位符
%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
常见的占位符有:
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%
强大的格式化方法.format()
这个不仅仅可以处理字符串,还可以处理字典,数列...基本上很好用,但是注意有一点小数需要注意:
s1 = 72
s2 = 85
print("{0}你去年考了{1}分,今年考了{2}分,今年比去年多考了{3:10.1f}分".format(r,s1,s2,s2-s1))
这里{3:10.1f}意思是:第四个数字(往后顺延一位)与前字母间距为10,'.1'的意思是小数点之后保留一位结果为:
小明你去年考了72分,今年考了85分,今年比去年多考了 13.0分
六 list:
list可以用索引取出值,其中需要注意的一点是list取值是从[0]开始取得,所以以后我记这种问题就要从0开始数数.....自勉!
当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(classmates) - 1
list是一个可变的有序表,所以,可以往list中追加元素到末尾:
方法有:
a.replace (B,b) 取代B为b
list.append() 加到末尾
list.insert() 加到指定位置,括号中可以进行切片,位置是从0开始:-1是最后一位
list.pop() 是删除最后一位,并且打印出来删除的值(需要print)
list中可以存放很多东西,比如list 数字 字符
七 tuple:
tuple是一个元组,他的特色是不可变更,所以推荐,能用元组,就不要用list,因为这样数据更加安全.
注意:tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。
即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
记住如果tuple中只有一个数字(1)一定要写成(1,)否则会默认成为list,而不是tuple
八 if...else...
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断
if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else
input()返回的数据类型是str,要运算需要转换
九/循环
Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来
for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句。
第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。
在循环中,break语句可以提前退出循环
在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环。
要特别注意,不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。
大多数循环并不需要用到break和continue语句,可以用标志符来运行
十\dict
字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。
dict就是第二种实现方式,给定一个名字,比如'Michael',
dict在内部就可以直接计算出Michael对应的存放成绩的“页码”,
也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。
把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:
>>> d['Adam'] = 67
>>> d['Adam']
67
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
如果key不存在,dict就会报错:
>>> d['Thomas']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Thomas'
要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> 'Thomas' in d
False
二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
dict内部存放的顺序和key放入的顺序是没有关系的。
和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
需要牢记的第一条就是dict的key必须是不可变对象。
dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)
在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key
十一\set:
set最大的特色是去重这是因为,set和dict类似,也是一组key的集合,但不存储value。
由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合
例如a = set([1, 2, 3])
print(a)
打印出{"1"}
1. 不能放入list dict 这类数值都可以中间改变
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
通过remove(key)方法可以删除元素:
>>> s.remove(4)
>>> s
{1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。
tuple虽然是不变对象,但试试把(1, 2, 3)和(1, [2, 3])放入dict或set中,并解释结果。