python基础
1、运算符
- + - * / // **(n**m类似n的m次方) %
- in, not in 结果是布尔值
- == is > < >= <= !=(<>) not(非)
- and ,or
==与is
==(类似于java中的equals)用来判断两个对象的value(值)是否相等。(只有数值型和字符串型的情况下,value相同则id也相同,也就是a==b与a is b)
is (类似与java中的==)也被叫做同一性运算符,判断id是否相等。
2、数字
a = "123"
b = int(a,base=n),n默认是10
3、字符串(可迭代对象)
字符串 (可迭代对象):' '," ",'''' '''这三个都可以表示字符串,但是以哪个开头,就必须以哪个结尾,其中支持加法和乘法 (表示将该字符串重复n遍)
字符串一旦创建就不可修改,一旦修改或拼接都会重新生成新的字符串(所以a='aaaa' 使用a[1]='4'运行不通过的)(这一点与java中的字符串是一样的)
字符串中方法
- capitalize() 首字母大写
- center(width,fillchar=None)设置宽度,并将内容剧中
- count(sub,start=None,end=None)查找指定字串出现的次数
- find(sub,start=None,end=None)从前往后找,找到第一个获取其下标,后面就不找了,没有找到返回-1
- format(*args, **kwargs) 将字符串中的占位符进行替换
- split(sep=None, maxsplit=None)
- replace(old, new, count=None)
- strip(chars=None) 移除字符串头尾指定的字符(默认是空格)
- isdigit()
- islower()
- isspace()
4、列表(可迭代对象)
li = ['a',1,2],列表中的元素可以是任何类型
list('aaaa')将字符串转换为列表,只能将可迭代的类型转换,其底层使用的是for循环,列表转换成字符串的时候,需要自己写for循环
- append(p_object):在原来值最后追加
- extend(iterable):注意与append的区别,append如添加列表,它是直接追加进去的,而extend是迭代可迭代对象,每个元素添加进去
- count(value):计算某个值的个数
- insert(self, index, p_object)
- remove(self,value)
- reverse(self):
- sort(cmp=None, key=None, reverse=False)
- pop()
- clear()
5、元祖(可迭代对象)
列表是有序的(每次打印列表都是一样的结果),且元素可以被修改,元组是对列表的二次封装,
1.元素不可被修改,
2.不能增加,不能删除
一般写元组时,推荐在后面加一个逗号(并不会报错),因为这样的话就容易与集合区分了。
- count(value):计算某个值的个数
- index(value, start=None, stop=None)
6、字典(可迭代对象)
info = {'k1':'v1','k2':'v2'} ,列表,字典 不能作为字典中的key。元祖是可以作为字典的Key的,因为元祖是不可变的对象
- clear(self)
- fromkeys(S, v=None),第一个参数作为生成字典的key,第二个参数是第一个参数的value。如info.formkeys([1,2,3],3) info = {1:3,2:3,3:3}
- get(self, k, d=None) d表示默认值,默认为null, dic[key]如果key不存在,则报错
- has_key(k)
- keys(self)
- values(self)
- items(self):以 (key value)返回
- pop(self, k, d=None)
- popitem(self):随机删除一个key:value并返回
- setdefault(self, k, d=None)
- update(self, E=None, **F)
7、集合(可迭代对象)
1不同元素组成,2无序,3集合中的元素必须是不可变类型(因为set内部是使用hash算法。而hash值的计算过程是依据这个值的特征计算的,这要求被hash的值必须固定,因此被hash的值必须不可变。而在java中并不是)
定义:s = {1,2,3}
- add(self, *args, **kwargs)
- clear(self, *args, **kwargs)
- copy(self, *args, **kwargs):浅拷贝
- pop(self, *args, **kwargs):随机删除一个对象
- remove(self, *args, **kwargs):指定删除对象,当删除不存在的对象会报错
- discard(self, *args, **kwargs):指定删除对象,当删除不存在的对象不会报错
- 集合的交集,并集,差集,交叉补集 s1 & s2 ,s1 | s2 ,s1 - s2 , s1 ^ s2
- isdisjoint(self, *args, **kwargs):判断两个集合是否有公共集合
- issubset(self, *args, **kwargs):判断s1是否是s2的子集
- issuperset(self, *args, **kwargs):判断s1是否是s2的父集
8、不可变集合
不可变集合就是一个无序的不可变的集合
用frozenset(seq)创建
a=frozenset([1,2,3,(1,2,4)])
主要用来做字典的键。。与tuple的区别在于无序,元素不可重复,且元素只能是不可变类型。
9、可迭代对象
a.如何判断一个对象是否是可迭代对象
可以用collections模块里面的iterable包的isinstance函数进行判断
from collections import Iterable#载入模块
isinstance('abc',Iterable) #字符串是可迭代对象吗?
True
b.可迭代对象的遍历
for ...in ...
c.可迭代对象的本质
我们分析对可迭代对象进⾏迭代使⽤的过程,发现每迭代⼀次(即在for...in... 中每循环⼀次)都会返回对象中的下⼀条数据,⼀直向后读取数据直到迭代了所有数据后结束。那么,在这个过程中就应该有⼀个“⼈”去记录每次访问到了第⼏条数据,以便每次迭代都可以返回下⼀条数据。我们把这个能帮助我们进⾏数据迭代的“⼈”称为迭代器(Iterator)。
可迭代对象通过 __iter__ ⽅法向我们提供⼀个迭代器,我们在迭代⼀个可迭代对象的时候,实际上就是先获取该对象提供的⼀个迭代器,然后通过这个迭代器来依次读取对象中的每⼀个数据。那么也就是说,⼀个具备了 __iter__ ⽅法的对象,就是⼀个可迭代对象。
10、强大的python
a.切片
可使用的对象有字符串,列表,元祖,集合。字典不可切片
python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作。
L[:10] #前十个数
L[-10:] #后十个数
L[10:20] #11-20个数
L[:10:2] #前10个数,每两个取一个
L[:] #复制一个list
b.join()
Python中有join()和os.path.join()两个函数,具体作用如下:
join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join(): 将多个路径组合后返回
1.join()函数
语法: 'sep'.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
2.os.path.join()函数
返回值:将多个路径组合后返回
注:第一个绝对路径之前的参数将被忽略
os.path.join('/hello/','good/boy/','doiido')
c.range与xrange
range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。一旦创建就会为其分配内存啦。
xrange 函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。(不过在python3中没有xrange了,在python3中range就是使用的xrange)
所以在生成很大的数字序列的时候,使用xrange比range性能优化很多,因为不需要一上来就开辟一块很大的内存空间
from datetime import * def test_range(): c1=0 t1 = datetime.now() for i in range(0,100000): c1 += 1 print datetime.now()-t1 def test_xrange(): c1=0 t1 = datetime.now() for i in xrange(0,100000): c1 += 1 print datetime.now()-t1 if __name__ == '__main__': test_range() test_xrange()
d.format()
通过{}和:来代替传统的%方式
"I am {},age {},sex {}".format("liu",14,"male") "I am {2},age {0},sex {1}".format("liu",14,"male") "I am {name},age {age},sex {sex}".format(name="xxx",age=23,sex="xxx")

浙公网安备 33010602011771号