zoukankan      html  css  js  c++  java
  • python学习之数据类型—列表list

    列表:list

    1、可变数据类型(不可哈希数据)、可切片、可循环
    2、有序
    3、可存任意数据类型
    4、可增删改查
    概括:
    增:
    append(元素)
    insert(index,元素)
    extend(iterable)
    删:
    pop(index)
    remove(元素)
    del[index/切片]
    clear()
    del list
    改:
    list【切片】= new_data
    查:
    list[index]
    for i in list:pass

    方法:
    len()
    count()
    index()
    sort(,reverse=False)升序,reverse为True时,降序,改变的是列表本身
    reverse()列表反转

    身份判断

     判断某个元素是否再字符串中或再列表,元组中 可以用 

    “元素” in  str
    “元素” in  list
    “元素” in  tuple

    1、 列表
    1.1(建)可以创建空列表 
            list = []
            list.append('David')
            print (list)    ----->结果:['David']
        通过append()来向列表尾部添加元素。
    
    注:list.append 中间的点“.” 是让对象调用内置关键字来进行某种操作。
    
        (^-^)要想用对象做某种处理,需要这个对象的名字(变量名),  然后是一个点,再后面是要对对象做的操作。
       
        1.2(查/改)列表中可同时包含不同类型的数据
            索引(index)表示元素的位置,从0开始算
            list[0]  -->得到的是一个元素
            切片 list[0:4] --->0,1,2,3-->得到的是一个列表
                简写list[:4] 从头到第三个元素
                    list[0:] 从第一个元素到列表结尾
                    list[:]  将列表全部显示出来
                修改list中的元素值list[2]=new_data
        1.3(增)向列表中添加元素方法:
            list.append() 向列表末尾增加一个元素
            list.extend() 向列表末尾增加多个元素
            list.insert() 自定义向列表中增加一个元素,可定义位置
                    list.append('new_data')                    
                       list.extend(['new_data1','new_datan'])
                    list.insert(位置参数,'new_data')   
           
        1.4(删)从列表中删除元素
            list.remove()         删除你选择的一个元素,如列表中有多个相同的元素,仅删除索引最小的那个即从左到右第一个出现的该元素,如果想去重可以将列表转换成集合即可set(list)
            del list[位置参数]
            list.pop()            取出列表中最后一个元素并删除
            list.pop(位置参数)  取出列表中指定位置的元素并删除
            1.4.1、某元素是否在列表中用: '元素'  in  list
                    通过返回true和flash来判定 
    
            1.4.2、查找元素在列表中的索引及位置参数用:list.index('元素')
    
        1.5、列表排序
             list.sort()  按字母顺序对字符串进行排序,直接改变列表顺序而不创建一个新的列表
                 eg:a = ['a','c','b','f','e']
                     a.sort()
                     print (a) 
                     结果:['a', 'b', 'c', 'e', 'f']
            注:如 sun_list = a.sort(),print(sun_list) 是没有结果的
    
             list.reverse() 按逆序排列或者a.sort(reverse = true)
                 eg:a.reverse()
                     print(a)
                     结果:['f','e','c','b','a']
    
        注:因排序是直接改变列表顺序,而不是生成新的列表,故如果不希望改变原数据,
        可以通过列表切片来生成副本,再对副本进行排序即可。       
                   eg:new_a = a[0:] 或 a[:]
                       new_a.sort()
                       print(new_a) 
                       >>['a', 'b', 'c', 'e', 'f']
               或者借助Python中提供的方法创建一个"排序后"的列表副本而原列表不变:
               sorted()
                   eg:new_list=sorted(a) 
                       print (a)
                       >>['a','c','b','f','e']
                       print(new_list)
                       >>['a', 'b', 'c', 'e', 'f']
    列表是可以改变的类型,而数字或字符串,元组(tuple)都是不可改变的,即不能增删和排序。
        1.6、双重列表
                -------------------------
                    语文   数学  英语
                -------------------------
                sun  88        89    60    
                -------------------------
                xiu  90     55    77
                -------------------------
                wen  59     59      59
                -------------------------
       
    sun_marks = [88,89,60]
    xiu_marks = [90,55,77]
    wen_marks = [59,59,59]
    
    class_marks =['sun_marks','xiu_marks','wen_marks']
    或
    class_marks =[[88,89,60],[90,55,77],[59,59,59]]   
       
       即想得到值通过位置参数即索引来得到,如:
               print class_marks[1]
               >>> [90,55,77]-----》从而得到"xiu_marks"的各科成绩
           如果想得到他的某一个成绩,Python通过二次索引得到
               print class_marks[1][0]
               >>>90

    列表中的元素删除:

    因直接删除列表或字典时,改变了列表的索引,字典的长度,导致可能达不到目的或报错

    万能办法:

    1、将原列表要删除的元素,保存到另一个临时列表

    2、循环临时列表,根据临时列表中的元素,在原列表中删除

     1 # 删除奇数的元素:
     2 li = [11, 22, 33, 44, 55]
     3 # 1、创建存放想删除元素的临时列表
     4 lis_temp = []
     5 # 2、循环原列表,将需要删除的元素添加到临时列表
     6 for el in li:
     7     if el % 2 == 1:
     8         lis_temp.append(el)
     9 # 3、循环临时列表,根据元素去查找原列表相同元素,并删除
    10 for el2 in lis_temp:
    11     li.remove(el2)
    12 # 4、打印原列表查看结果
    13 print(li)  # [22, 44]

     ### Python - 去除list中的空字符

    list1 = ['122', '2333', '3444', '', '', None]
    a = list(filter(None, list1))  # 只能过滤空字符和None
    print(a)  # ['122', '2333', '3444']
     
     
    # Python内建filter()函数 - 过滤list
    # filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素
    def not_empty(s):
        return s and s.strip()
     
    list2 = ['122', '2333', '3444', ' ', '422', ' ', '    ', '54', ' ', '', None, '   ']
    print(list(filter(not_empty, list2)))  # ['122', '2333', '3444', '422', '54']
    # 不仅可以过滤空字符和None而且可以过滤含有空格的字符
    注意: Pyhton2.7 返回列表,Python3.x 返回迭代器对象
    

      

  • 相关阅读:
    致应届毕业生——程序员的生存法则 转自CSDN 作者:陈丽辉
    TIOBE 8月份编程语言排行榜,F#强势插入
    C–gcc命令行下的参数
    转载sunboy_2050 Android APK反编译详解(附图)
    转载IT168 分析:Python在Linux平台上的发展前景
    PHP 简单学习过程1
    买火车票必须知道的事
    Delphi PointerMath编译指令
    给DropDownList的DataTextField属性绑定两个字段
    通过HttpModule、httpHandlers防止SQL注入式攻击
  • 原文地址:https://www.cnblogs.com/sunxiuwen/p/9041822.html
Copyright © 2011-2022 走看看