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")

 

posted @ 2018-08-25 20:48  刘丽刚  阅读(116)  评论(0)    收藏  举报