python学习2

1.input()返回的是字符串, 如果想读入一个数字,应该用int()转化

2.循环的写法与C不同的地方就是,for while等写完之后在那一行后面要加上一个冒号,这是比较特殊的地方。

  还有就是range(5)可以得到0,1,2,3,4 比如执行liat(range(5))得到  [0,1,2,3,4]

3.names = ['hello','woeld','haha']

  for name in names:

    print(name)

最后得到:

  hehe

  haha

  yeye

4.dict

  4.1python中的这个dict也是个神奇的东西,作用和C里面讲的哈希算法一样一样的,其实算法并没有语言之分,只不过是算法有不同的语言的表示罢了。而这个dict数据结构,就是恰恰反映哈希算法的东西。

  前面我们知道,python中定义list用了[],而定义不可变对象tuple用了(),剩下一个没用那就是{}了,这么说好像有点牵强,但是比较好记嘛,暂时就这么解释了。

  eg:1.d = {'haha':20,'heihei':30,'hehe':40}    定义完之后,我输入了d['haha']得到了20。注意这里面我用的是[],d['haha'],这样就实现了dict结构的d的访问。

     2.当然如果是d['hihi']这种kay不存在的语句,python会报错。

     3.也可以用 'hehe' in d 来验证'hehe'是否在d中;

     4.另一种验证的方法是d.get('hehe')来试,如果d中有'hehe'对应的值,就会输出,否则什么也不会出现。

     5.也可以写成d.get('hehe',-5)执行结果是如果d中有'hehe'元素,那么就输出响应的值,如果没有那就输出-5,这样就直接可以得知d中没有这个元素了。  

     6.关于dict还有其他的一些操作,比如: d.pop('haha')  这样就把'haha'对应的20连通'haha'一块都删掉了。

  4.2关于的dict的哈希特性需要特别的说明一下:其实要用list或者tuple存储一个数组的时候,查找某个元素的时候就像从一本字典的第一页翻起去找中间某个字,很有可能就是事件上超级费时;而dict用的是哈希的方法,就是首先通过'haha','heihei'这些字符串计算一个key值,然后将20,30 分别对应存放在相应的key值的地方。等到再次输入'haha'的时候重复计算key的过程,就得到了'haha'的key值,直接到相应地点取出即可。这样直接的方法相当的给力。  相比于list和tuple在查询时间上就是一个质的飞越,但是通过刚才的描述的计算存储过程想必也可以知道dict占用的空间将会很大,这就是所谓的用“空间换时间”吧。

  eg:由于dict的这个特性,所以计算的时候就有了不能出现 d = {'haha':20,'haha':30,'hehe':40}的情况,这样的话20会被自动抹去。另外dict中元素的排序是按其key值来排序的,跟输入顺序并没有什么关系。

5.set实现方法

    set与dict最大的不同就是set不存储值,他放入内存的方式和dict一样,都是通过哈希算法来计算一个key值。最后实现的结果就是一个数学意义上的无序的、不重复的集合。我们可以按照数学的方式那样子进行&操作、|操作,最终得到的就是数学意义的计算结果。

    python学习2

6.不可变对象

  6.1str是不可变对象、list是可变对象

  6.2对于可变对象list内部的东西是可以变化的,比如:

    python学习2

    可以看到a在排序前后内容发生了改变,换一个层面来看这段代码,告诉我们list中的元素有时候是可以用a.sort()排序的哎!

  6.3对于不可变对象:

    python学习2

    对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。

    相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的

上一篇:python 正则表达式特殊字符


下一篇:python正则表达式Re模块备忘录