zoukankan      html  css  js  c++  java
  • python学习笔记(二)

    List:

    list是一种有序的集合,可以随时添加和删除其中的元素。List里面的元素可以是不同类型的,也可以是list,嵌套,相当于二维数组。list=['dfs','DSF',123],空的list=[]

    len():函数可以获得list元素的个数

    list[0]: 下标为0的元素值

    list[-1]:倒数第一个元素,即最后一个数

    pop():弹出末尾的元素

    pop(i):弹出第i个元素

    append():list中追加元素到末尾

    insert(1,“”):把元素插入到指定的位置,比如索引号为1的位置。

    sort():对元素排序

    要把某个元素替换成别的元素,可以直接赋值给对应的索引位置

    可变也不可变对象:

    字符串是不可变的,比如str="apple";str.replace('a', 'A') 这个的结果是Apple,但是str还是apple

    list是可变的:比如list = [1,2,4,3,5]; list.sort(); 这个结果是12345,list的结果也是12345

    所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。


    tuple:

    有序列表叫元组。tuple和list非常类似,但是tuple一旦初始化就不能修改,没有append(),insert()这样的方法。其他获取元素的方法和list是一样的。当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来。tuple=('dfs','DSF',123),空的tuple=();只有一个元素的tuple=(1,)

    在显示只有1个元素的tuple时,也要加一个逗号,,以免误解成数学计算意义上的括号。

    "可变"的tuple:tuple = ('a', 'b', ['A', 'B']);tuple[2][0]='x';tuple=[2][1]='y';这时候在输出tuple为('a', 'b', ['x', 'y'])?

    这个tuple定义的时候有3个元素,分别是'a','b'和一个list。

    之后修改list的值,变为:

    tuple指向的值并没有变化,变化的只是list指向的值,tuple一开始指向的list并没有改成别的list,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!


    字典:

    dictionary,相当于map,一个键值对,使用大括号,dict = {‘apple’: 1,‘bananan’:2, ’orange‘:3}。相应的使用dict['apple']就可以得到1。

    这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。多次对一个key放入value,后面的值会把前面的值冲掉即更新。key必须是不可变对象。

    判断是否存在key:一、可以使用in :'apple' in dict 输出 true。二、通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:dict.get('apple'),dict.get('apple',-1)。

    pop(key)方法,删除一个key,对应的value也会从dict中删除

    和list比较,dict有以下几个特点:

    查找和插入的速度极快,不会随着key的增加而增加;

    需要占用大量的内存,内存浪费多。

    而list相反:

    查找和插入的时间随着元素的增加而增加;

    占用空间小,浪费内存很少。

    所以,dict是用空间来换取时间的一种方法。


    set:

    set和dict类似,也是一组key的集合,但不存储value。在set中,没有重复的key。

    要创建一个set,需要提供一个list作为输入集合:s=set([1,2,3]),重复的值会自动过滤:s=set([1,2,2,3,3]) 为set([1,2,3])

    add(key):方法可以添加元素到set中

    remove(key):方法可以删除元素

    set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作(s1 & s2 | S3)


    切片Slice:

    L[0:3]:L[:3]取前3个元素,从索引0开始取,直到索引3为止,但不包括索引3。

    L[-2:]:倒数两个数(后两个数),最后一个数的索引是-1

    L[-2:-1]:倒数第二个数,这个时候不包括-1即最后一个数。

    L[::5]:每5个数取一个,


    迭代:

    给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple。for.....in 

    默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()。

    由于字符串也是可迭代对象,因此,也可以作用于for循环:for ch in 'ABC'

    使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,不必知道该对象究竟是list还是其他数据类型。

    如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

    >>> from collections import Iterable 

    >>> isinstance('abc', Iterable) # str是否可迭代

     True

    如果要对list实现类似Java那样的下标循环?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

    >>> for i, value in enumerate(['A', 'B', 'C']):

     ...     print i, value ... 

    0 A 

    1 B

  • 相关阅读:
    增强MyEclipse提示功能
    Mysql安装配置,修改初试密码。
    在我的电脑里面创建图标
    popup non topmost
    多线程下载或上传数据限速
    SynchronizationContext
    linux运维笔记——常用命令详解diff
    linux运维笔记——curl
    linux下mysql的源码安装
    shell编程——变量的数值计算
  • 原文地址:https://www.cnblogs.com/silence-hust/p/4230998.html
Copyright © 2011-2022 走看看