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 返回迭代器对象

  

posted @ 2018-06-19 13:07  Alive_2020  阅读(254)  评论(0编辑  收藏  举报