zoukankan      html  css  js  c++  java
  • 第二章—数据类型列表list

    浮点数:(有限或无限循环小数包括0)

    浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。

    处理浮点数的运算是要注意尾数问题。

    round(x,y):将x进行四舍五入操作,保留y位小数

    列表:是一个数据的集合,里面可以放任何的数据类型

    创建

    只要把逗号分隔的不同的数据项使用方括号括起来即可。

    方法一:
    
    L = ['a', 'b', 1, 2, ['c', 'd']]
    
    
    
    
    方法二:
    L2 = list(('a','b'))
    
    多个值用()括起来

    查询

    通过索引查询操作;正向递增,反向递减,从左往右从0开始,最末尾的为-1。

    L = ['a', 'b', 1, 2, ['c', 'd']]
    0 1 2 3 4
    L[1] = ‘b’
    L[4] = ['c', 'd']

    L[索引号]就可以取出所对应的值

    切片:L[M:N:K]M和N为索引号,K为步长。从M到N(包括M不包括N)根据步长K取值。
    M和N缺失时代表至开头和至结尾(包括最后一个值)
    K为负数时代表从右往左开始取值。(当K为负值时,M>N)

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> L[:-2:2]
    ['a', 1]

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> L[-1:-3:-1]
    [['c', 'd'], 2]

    a= [1,2,3,4,5,'a','c',11,23,22,55]
    print(a[10:0:-1])    
    >>>[55, 22, 23, 11, 'c', 'a', 5, 4, 3, 2]
    a= [1,2,3,4,5,'a','c',11,23,22,55]
    print(a[0:10:-1])    # K为负值时,M<N,返回一个空列表
    >>>[]
     
    
    

    增加

    L.append(元素) 追加(加到最后的位置)

    L = L.append('james')(没有返回值)
    L = ['a', 'b', 1, 2, ['c', 'd'],'james']



    L.insert(索引,元素)在指定的索引位置插入元素

    L.insert(2,"tony")(没有返回值)
    L =['a', 'b', 'tony', 1, 2, ['c', 'd']]

    扩展
    L.extend(L1)把L1扩展到L内,加在末尾,L发生改变,L1没有发生改变,L1必须是可迭代元素(不能是数字),会将L1拆分成最小元素加到L中。

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> L1 = ['a','c','james']
    >>> L.extend(L1)
    >>> L
    ['a', 'b', 1, 2, ['c', 'd'], 'a', 'c', 'james']

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> L.extend('abc')  # 拆分成最小元素加入进来
    >>> L
    ['a', 'b', 1, 2, ['c', 'd'], 'a', 'b', 'c']

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> L.extend(123)    # 数字不是可迭代的,所以报错
    Traceback (most recent call last):
    File "<pyshell#4>", line 1, in <module>
    L.extend(123)
    TypeError: 'int' object is not iterable

    删除

    L.remove(元素)删除指定元素,一次只能一个,元素不存在报错

    L = ['a', 'b', 1, 2, ['c', 'd']]
    L = L.remove(“a”)(没有返回值)
    L =['b', 1, 2, ['c', 'd']]

    L.pop(索引号)有索引是删除指定索引的元素,为空时默认删除最后一个。
    L.pop(-1) =
    ['c', 'd'](返回的是被删除的内容)

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> L.pop()   # 索引为空的时候默认删除最后一个
    ['c', 'd']

    del全局删除
    del L[索引]按索引删除元素

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> del L[2]
    >>> L
    ['a', 'b', 2, ['c', 'd']]

    del L[M:K]按照切片删除

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> del L[1:3]
    >>> L
    ['a', 2, ['c', 'd']]

    del L删除整个列表

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> del L
    >>> L
    Traceback (most recent call last):
    File "<pyshell#118>", line 1, in <module>
    L
    NameError: name 'L' is not defined

    修改

    单个值,按索引赋值修改
    >>> L = [1,2,'A','c'] >>> L[1] = 'james' >>> L [1, 'james', 'A', 'c'] 多个值,切片形式,去除切片的元素,将赋值的元素迭代的添加 >>> L = [1,2,'A','c'] >>> L[0:2] = 'james' >>> L ['j', 'a', 'm', 'e', 's', 'A', 'c']

    列表的循环:

    遍历循环列表,打印列表的元素
    >>> L = ['a', 'b', 1, 2, ['c', 'd']] >>> for i in L: print(i) a b 1 2 ['c', 'd']

    遍历循环列表,打印列表的索引以及对应的元素值
    >>> L = ['a', 'b', 1, 2, ['c', 'd']] >>> for index,i in enumerate(L): print(index,i) 0 a 1 b 2 1 3 2 4 ['c', 'd']

    列表的其他方法:

    L.index(元素)返回元素的索引
    >>> L = ['a', 'b', 1, 2, ['c', 'd']] >>> L.index('b') 1
    L.count(元素)返回元素在L中的个数(如果有多个相同元素,找到的是第一个元素的索引) >>> L = ['a', 'b', 1, 2, ['c', 'd']] >>> L.count('a') 1
    L.sort(reverse=False)排序,把列表中的元素按照ASCII码表排序,只能同种数据类型排序,否则报错,默认为False,从小到大,reverse=True,从大到小 >>> L = ['a', 'b', 1, 2, ['c', 'd']] >>> L.sort() Traceback (most recent call last): File "<pyshell#98>", line 1, in <module> L.sort() TypeError: '<' not supported between instances of 'int' and 'str' >>> L = ['c', 'z', 'a', 'g'] >>> L.sort() >>> L ['a', 'c', 'g', 'z'] L.reverse()反序,把列表中的元素反序 >>> L = ['a', 'b', 1, 2, ['c', 'd']] >>> L.reverse() >>> L [['c', 'd'], 2, 1, 'b', 'a']

    len(L)列表里面元素的个数

    L + L1 L和L1扩展,L没有发生改变,L1没有发生改变

    >>> L = ['a', 'b', 1, 2, ['c', 'd']]
    >>> L1 = ['a','c','james']
    >>> L + L1
    ['a', 'b', 1, 2, ['c', 'd'], 'a', 'c', 'james']

     列表的深浅Copy

    1.赋值运算(两个列表指向的是同一个内存地址,共享里面的所有元素,一个改变另一个也改变)

    l1 = [1,2,3,['barry','alex']]
    l2 = l1
    
    l1[0] = 111
    print(l1)  # [111, 2, 3, ['barry', 'alex']]
    print(l2)  # [111, 2, 3, ['barry', 'alex']]
    
    l1[3][0] = 'wusir'
    print(l1)  # [111, 2, 3, ['wusir', 'alex']]
    print(l2)  # [111, 2, 3, ['wusir', 'alex']]

    2.浅copy(列表里面的第一层是独立的,但是列表里面的子列表里面的元素又是共享的)

    l1 = [1,2,3,['barry','alex']]
    
    l2 = l1.copy()
    print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2380296895816
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2380296895048
    l1[1] = 222
    print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2593038941128
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2593038941896
     
    l1[3][0] = 'wusir'
    print(l1,id(l1[3]))  # [1, 2, 3, ['wusir', 'alex']] 1732315659016
    print(l2,id(l2[3]))  # [1, 2, 3, ['wusir', 'alex']] 1732315659016

    3.深拷贝deepcopy(需要调用python的第三方工具,copy模块,这样得到的两个列表是完全独立的)

    import copy
    l1 = [1,2,3,['barry','alex']]
    l2 = copy.deepcopy(l1)
    
    print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2915377167816
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048
    
    l1[1] = 222
    print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2915377167816
    print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048
    
    l1[3][0] = 'wusir'
    print(l1,id(l1[3]))  # [1, 222, 3, ['wusir', 'alex']] 2915377167240
    print(l2,id(l2[3]))  # [1, 2, 3, ['barry', 'alex']] 2915377167304
  • 相关阅读:
    linux 程序无缘无故推出 没有core文件 broken pipe Resource temporarily unavailable
    inline元素、block元素、inline-block元素
    转:Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH
    转: 深入理解信号槽机制
    【模式识别与机器学习】——PART2 机器学习——统计学习基础——Regularized Linear Regression
    【模式识别与机器学习】——PART2 机器学习——统计学习基础——2.Bias variance tradeoff
    关于GPU你必须知道的基本知识
    【计算机算法设计与分析】——5.5 0/1背包问题
    【模式识别与机器学习】——5.2 形式语言理论和句法模式识别
    【模式识别与机器学习】——句法模式识别5.1集合论中的关系运算
  • 原文地址:https://www.cnblogs.com/james201133002/p/9079026.html
Copyright © 2011-2022 走看看