美文网首页
Python---基本知识12之常用数据类型列表

Python---基本知识12之常用数据类型列表

作者: hello_我的哥 | 来源:发表于2018-01-06 22:00 被阅读25次

    什么是列表?

    列表就是可变的有序的元素集合,列表里面的每一个元素都有他的下标,其实python里面的列表就有些像java里面的数值,

    列表的表现形式:从下面这个列表我们可以看出来,列表是用一对[],然后里面的类型是object,什么类型都可以,也可以嵌套列表;

    name=['zhangsan','lisi',18,19,True,[8,6]]

    列表的赋值方式:上面就是一种赋值方式,直接赋值,还有一个range()函数也可以完成列表的赋值:这个函数,有3个参数,第一个参数是起始位置,然后是终点位置,最后一个是步长,也是左闭右开区间;对于range()函数,需要注意一点就是在python3里面你用到这个列表的时候才会生成,如果你没有用到这个列表是不会生成的

    age=range(5,91,2)

    第二种赋值方式:列表推导式,用for  in 语句,用这种方式可以把一个列表进行克隆或者是说变大或者缩小;

    age=[1,2,3,5,7,9,11]

    age1=[num for num in age if num%2==0]

    print(age1)

    列表的常用操作,这个对于列表来说还是比较重要的,就和之前说的字符串的常用操作一样,主要有四种常用操作:

    增:

    A:通过append()语句,用于在列表的末尾增加一个元素;

    age = [9]

    age.append(10)

    print(age)

    B:通过insert语句,可以把一个object插入你想插入的地方;

    age = [9]

    age.insert(0,10)

    print(age)

    C:通过extend()语句,可以把一个列表增加多个值,但是这些值也是只能增加在最后;

    tag=[2,8,10]

    age = [9]

    age.extend(tag)

    print(age)

    D:通过乘法运算和加法运算也可以把列表增加:乘法就是把自己乘多少遍,加法就是在最后连接一个列表,需要注意一点就是这两种方式不会修改原列表;

    tag='woshishui'

    age = [9]

    age*=5

    age+=tag

    print(age)

    删:

    A:pop()语句,删除对应下标值的元素;默认是-1,即最后一个元素;

    age=[1,2,3,4,5,6,7,8]

    age.pop(0)

    print(age)

    B:remove()语句,删除对应的object元素,默认是移除最左边的一个object

    age=[1,2,3,4,5,6,7,8]

    age.remove(1)

    print(age)

    C:del语句,这个就厉害了,这个会删除内存地址,即会把你的存储空间都删掉

    age=[1,2,3,4,5,6,7,8]

    del age

    改:可以通过下标值去直接修改object,需要注意的是[]里面的值是下标值;

    age = [1, 2, 3, 4, 5, 6, 7, 8]

    age[1] = 8

    print(age)

    查:

    A:获取单个元素

    age = [1, 2, 3, 4, 5, 6, 7, 8]

    print(age[2])

    B:获取元素索引,Index()语句,第一个元素是object值,第二个元素是起始位置,第三个元素是终点位置;

    age = [1, 2, 3, 4, 5, 6, 7, 8,2,8,2]

    print(age.index(2,-2))

    C:获取指定元素个数:count()

    age = [1, 2, 3, 4, 5, 6, 7, 8,2,8,2]

    print(age.count(2))

    D:切片,就和string一个形式,第一个参数是起始位置,第二个参数是终点位置,第三个参数是步长,需要注意一点就是中间是用:间隔符;如果步长是负数,就是从最后一个开始往前面取值,

    age = [1, 2, 3, 4, 5, 6, 7, 8, 2, 8, 2]

    print(age[1:8: 2])

    E:反转[::-1]

    age = [1, 2, 3, 4, 5, 6, 7, 8, 2, 8, 2]

    print(age[:: -1])

    F:遍历

    F.1通过元素进行遍历:

    age = ['a','v','f','g','s','w']

    for v in age:

        print(v)

    F.2通过索引进行遍历:首先应该得到元素的索引,然后通过索引就能拿到元素的值了:

    age = ['a','v','f','g','s','w']

    indexs=range(len(age))

    for v in indexs:

        print(age[v])

    F.3通过枚举对象遍历:通过枚举函数,将一个可遍历的对象生成一个新的对象,这个对象的每一个元素都包含之前对象的下标和对应值;由于枚举对象的每一个元素都是一个元祖对象,所以也可以这样写 a,b

    age = ['a','v','f','g','s','w']                            

    enum =enumerate(age)

    for e in enum:

        print(e)

    age = ['a','v','f','g','s','w']

    enum =enumerate(age)

    for a,b in enum:

        print(a,b)

    F.4通过迭代器进行遍历:在讲通过迭代器进行遍历之前,需要讲两个概念一个就是可迭代对象,一个是迭代器,可迭代对象实际上就是指这个对象拥有遍历的这个属性,可以使用for in进行遍历,那么这个对象就是可迭代对象,另外一个使用一个函数进行验证,isinstance,这个函数相当于是判断这个对象是否拥有这个能力,

    判断是否可迭代

    import collections

    age = ['a','v','f','g','s','w']

    result=isinstance(age,collections.Iterable)

    print(result)

    那么什么又是迭代器呢,迭代器是可以记录遍历位置的对象,也就是说你把一个列表转成迭代器之后,迭代器本身就拥有了遍历的能力了,也就是可以自己完成遍历了,当然迭代器也是可迭代对象,所以自然也可以用for in 语句,把一个可迭代对象转成迭代器使用:iter()函数;判断是否是迭代器也有两种方式,第一就是可不可以自己完成遍历过程,也就是调用next()函数,第二也是用isinstance函数,

    it=iter(age)

    result=isinstance(it,collections.Iterator)

    next(it)

    print(result)

    ===========================

    it=iter(age)

    result=isinstance(it,collections.Iterator)

    next(it) for i in it:

        print(i)

    print(result)

    迭代器的优点:节约内存空间,他只有一个内存地址保存当前遍历到的对象,这之前,之后的对象都没有分配内存地址,也提供了统一的针对可迭代对象进行遍历的接口;需要注意一点是迭代器只能迭代一次,不能多次使用;

    G:判定,判断一个元素是否在一个集合里面,用in  not in语句;

    age = ['a','v','f','g','s','w']

    newStr='a'

    newStr1='l'

    result=newStr in age

    result1=newStr1 not in age

    print(result,result1)

    H:比较,对于比较的话,python2用的是cmp()函数,而python3用的是比较符:> < ==

    H.1 python3:

    list = [1, 9, 6]

    list1 = [1, 8, 7]

    resule = list > list1

    print(resule)

    H.2 python2

    list = [1, 9, 6]

    list1 = [1, 8, 7]

    result=cmp(list1,list)

    print(result)

    I.排序,有两种方式,一种就是用内建函数,sorted,第二种用列表对象方法,list.sort()两种方法都是大同小异,先说第一种:

    list=['k','a','s','w','j']

    result=sorted(list,reverse=True)

    print(result)

    reverse控制的是增序,还是降序,默认是增序,设置为True就是降序;还有一种情况就是指定排序的元素,比如:这种情况就针对一个元素有多个值得情况,我们可以让它对哪个进行排序;

    list=[('n',5),('w',8),('h',9),('t',1),('b',3),('l',7)]

    def getkey(x):

        return x[1]

    result=sorted(list,key=getkey)

    print(result)

    list.sort()方法,是针对于列表本身得,所以通过这种方式改变得是列表本身,也并没有返回值,sorted方法呢,是内建函数,他不会改变列表本身,只会将列表排好序之后返回出来;

    J:乱序,就是把列表得顺序打乱,通过得是random得shuffle()函数,打乱得是列表本身

    list=[('n',5),('w',8),('h',9),('t',1),('b',3),('l',7)]

    random.shuffle(list)

    print(list)

    K:反转,两种方式,一种是直接调用:reverse(),这种方式反转得是列表自己,另一种用切片反转;这种方式,列表不会改变:

    list.reverse()

    res=list[::-1]

    好了 ,列表所有操作结束了;

    相关文章

      网友评论

          本文标题:Python---基本知识12之常用数据类型列表

          本文链接:https://www.haomeiwen.com/subject/azbynxtx.html