Python记录(一)数据结构之 列表结构

一、概念

    1、列表 及列表元素;

            1)列表:一系列元素的组合;  【虽然有点废话,但是确实是我对列表的理解;接下来就说点列表特有的性质】

                  a)  列表用方括号 [] 来表示; 列表中多个元素之间用逗号分割;

                  b) 期待为列表起一个 见名知意的名字;

                  c) 列表定义:  names = [1 , "晓明",  "lucy",  "张起灵"]

            2)列表元素 : 列表中的每一项,均为一个列表元素; 

                 a) 列表中的元素可以毫无关系;不必要求必需为同一种类型; 所以可以定义为任意类型(包括:int型数字、string型的串、子列表变量、dict变量、对象等);

                 b) 列表中的元素,应该是无序、非去重的;【即可以有重复的元素】

                 c)列表一旦定义, 元素的位置是固定的,除非手动执行修改;

                 d)列表中的元素虽然可以任意,但是对于列表元素为串时,一定要用引号(可以是包括单引号,也可以是双引号),否则会报错;

     2、访问和使用列表元素

            1)通过索引访问列表元素  【通过索引查询列表,时间复杂度为O(1) 】

                a)正序访问,从0开始,依次加一;

                b)逆序访问,从-1开始, 索引-2 即为倒数第二个列表元素,以此类推;

             2)可以 同使用普通变量一样,直接访问和调用列表元素;

                 a) 列表元素为int型:可以直接使用列表元素做数学运算:例如:

                      

                 b) 列表元素为string型:可以直接使用列表元素调用string的函数、或者做串的拼接;

                     

       3、列表的切片

              列表切片:顾名思义,就是将列表中的若干元素划分为一片一片的,每一片都包含了若干个列表元素;

              使用场景:我们通过上述获取列表元素的方法,只能每次获取一个列表元素, 假如有一种场景,需要获取一次性读取(或修改)列表中一部分的元素值, 这种情况下,我们就可以使用切片的逻辑来完成;  有个栗子:             

二、操作

     1、修改列表元素

              通过索引直接修改任何列表元素的值;   赋予新值即可;

     2、添加元素【三个往列表中新增元素的方法】

        1)append 函数: 在列表末尾添加指定的对象;

              【入参】: a.append(obj);  obj为要添加到列表a中的对象; 

                           obj 可以为int型数字、 字符串(需要用引号包围)、变量(int型变量、字符串型变量、列表型变量、字典型变量等)

              【返回值】:无

              【作用】:在列表的末尾,添加指定对象obj;

             【备注:如果新增的元素为串, 要么使用引号直接添加,要么使用string变量添加】

              

        2)insert 函数: 在列表的任意位置插入元素;

        【入参】:a.insert(index,  obj): 

               index:表示插入的位置(这里指的是列表的下标,从0开始);  obj:表示插入的对象,这里可以插入的对象同append支持的类型一致;

        【返回值】:无

        【作用】:在列表的指定位置,添加指定的对象;             

        3)extend 函数:在列表的末尾一次性插入多个元素;

           【入参】:a.extend(seq);   

                     seq 应该为一个列表或者列表变量;但是,试了一下,输入一个串、一个字典也是可以的;

运行为:
mylist = [1, 2, 3, 4]
mylist.extend([4, 5, 6])
print "直接插入一个列表变量,结果为: ", mylist

mylist.extend('abc')
print "直接插入一个串,结果为: ", mylist
onedict={'key1': 'value1', 'key2': 'value2'}

mylist.extend(onedict)
print "直接插入一个串,结果为: ", mylist

结果为:
the original list is:  [1, 2, 3, 4]
直接插入一个列表变量,结果为:  [1, 2, 3, 4, 4, 5, 6]
直接插入一个串,结果为:  [1, 2, 3, 4, 4, 5, 6, 'a', 'b', 'c']
直接插入一个串,结果为:  [1, 2, 3, 4, 4, 5, 6, 'a', 'b', 'c', 'key2', 'key1']

解析:
1、extend函数,将入参集合中 每个元素都当做一个单独的列表元素,依次插入到原有列表中;
2、若入参为一个字典型变量,则只插入了key; 
3、这一点同append函数不同, append函数会将整个字典做为一个列表元素,插入到原有列表中,如:
   

mylist = [1, 2, 3, 4]
onedict={'key1': 'value1', 'key2': 'value2'}
mylist.append(onedict)
print "使用append方法插入一个字典型变量,结果为 : ", mylist

结果为:
使用append方法插入一个字典型变量,结果为 :  [1, 2, 3, 4, [4, 5, 6], {'key2': 'value2', 'key1': 'value1'}]

          【返回值】:无

           【作用】:在列表的末尾,添加指定的 多个元素的集合

          【一个疑惑】:append函数和extend函数,均可以用串、列表和字典做为入参,那么他们的区别是:

运行代码:
mylist = [1, 2, 3, 4]
print "the original list is: ", mylist
mylist.append([4, 5, 6])
print "the append result is: ", mylist
print '===================================================='
print "the original list is: ", mylist
mylist.extend([4, 5, 6])
print "the extend result is: ", mylist

结果为:
the original list is:  [1, 2, 3, 4]
the append result is:  [1, 2, 3, 4, [4, 5, 6]]
====================================================
the original list is:  [1, 2, 3, 4, [4, 5, 6]]
the extend result is:  [1, 2, 3, 4, [4, 5, 6], 4, 5, 6]

解析:
同样是以一个列表做为入参,  append和extend的处理逻辑为:
append: 本质是插入一个列表元素; 这样就 将入参: [4, 5, 6],当做一个列表元素,整体插入到原有列表的尾部;  所以我们看到原有列表mylist 中 又嵌套了一个列表;

extend: 本质是用于插入 一堆 列表元素; 这样就将入参: [4, 5, 6], 当做是一个列表元素的集合, 里面的每个元素都做为一个单独的元素,插入到了原有列表mylist中;

    3、删除列表元素

           1) remove函数:从列表中删除指定元素

               【入参】: mylist.remove(obj)

                   obj:  指定删除的元素;这里的obj,同append的入参一样,可以是任何对象,只要是原有列表中有的都可以进行删除;

执行:
mylist=[1, 2, 3, 4, [4, 5, 6], {'key2': 'value2', 'key1': 'value1'}, 4, 5, 6, 'a', 'b', 'c', 'key2', 'key1']
mylist.remove(4)
print '通过remove删除指定元素4后的结果:', mylist

mylist.remove([4, 5, 6])
print '通过remove删除指定元素[4,5,6]后的结果:', mylist

mylist.remove({'key2': 'value2', 'key1': 'value1'})
print '通过remove删除指定元素{'key2': 'value2', 'key1': 'value1'}后的结果:', mylist


结果为:
通过remove删除指定元素4后的结果:[1, 2, 3, [4, 5, 6], {'key2': 'value2', 'key1': 'value1'}, 4, 5, 6, 'a', 'b', 'c', 'key2', 'key1']
【备注】若列表中包含多个相同的元素,则只删除第一个匹配到的元素;

通过remove删除指定元素[4,5,6]后的结果:[1, 2, 3, {'key2': 'value2', 'key1': 'value1'}, 4, 5, 6, 'a', 'b', 'c', 'key2', 'key1']

通过remove删除指定元素{'key2': 'value2', 'key1': 'value1'} 后的结果:[1, 2, 3, 4, 4, 5, 6, 'a', 'b', 'c', 'key2', 'key1']

           2)del 操作;从列表的指定位置删除元素;

               【入参】:  del   mylist[index];   index 指定删除的位置,从0开始;逆序从-1开始;

               【返回值】:无

               【作用】:  从列表中的任意指定位置删除元素;

mylist=[1, 2, 3, 4, {'key2': 'value2', 'key1': 'value1'}, 4, 5, 6, 'a', 'b', 'c', 'key2', 'key1']
del mylist[-1]
print '通过del 操作删除列表的最后一个元素,结果为:', mylist

结果为:
通过del 操作删除列表的最后一个元素,结果为: [1, 2, 3, 4, {'key2': 'value2', 'key1': 'value1'}, 4, 5, 6, 'a', 'b', 'c', 'key2']

            3)pop函数: 从列表中移除指定位置的元素,同时输出该元素

             【入参】: mylist.pop(index);   index 指定移除的位置,从0开始,逆序从-1开始; 若不填,默认为-1;

             【返回值】: 被删除的元素

执行:
mylist=[2, 3, 4, [4, 5, 6], {'key2': 'value2', 'key1': 'value1'}, 4, 6, 'a', 'b', 'c', 'key2', 'key1']

del_result=mylist.pop(3)
print '通过pop移除列表中下标为3的元素, 该元素为:', del_result
print '移除后,列表中的元素为:', mylist

结果为:
通过pop移除列表中下标为3的元素, 该元素为: [4, 5, 6]
移除后,列表中的元素为: [2, 3, 4, {'key2': 'value2', 'key1': 'value1'}, 4, 6, 'a', 'b', 'c', 'key2', 'key1']

      4、一些其他常用的操作;

          1)找出列表中元素的最大值和最小值:

                  max_result = max(mylist) :  入参为list;  出参为list中的最大值;

                  min_result = min(mylist):  入参为list,出参为list中的最小值;

            【备注】: 这里的最大值,最小值,如果列表元素均为数字,那么可以直接找到最大值和最小值;

                               如果列表元素中包含了字符串,则以字符的ASCII 值为准;  

mylist=[1, 2, 3, 4, [4, 5, 6], {'key2': 'value2', 'key1': 'value1'}, 4, 5, 6, 'a', 'b', 'c', 'key2', 'key1']

print 'the max value is:', max(mylist)

结果为:
the max value is: 'key2'

           2)统计列表中元素的个数【即列表的长度】

               list_len = len(mylist)

           3)统计列表中,指定元素出现的次数;

               obj_count = mylist.count(obj)   

           4)原位置  逆序列表中的元素;【即reverse操作】

                 没有入参,没有返回值,但是会直接作用到原列表中,使其元素逆序;

mylist = [1, 2, 3, 4, [4, 5, 6], {'key2': 'value2', 'key1': 'value1'}, 4, 5, 6, 'a', 'b', 'c', 'key2', 'key1']
mylist.reverse()
print mylist

结果为:
['key1', 'key2', 'c', 'b', 'a', 6, 5, 4, {'key2': 'value2', 'key1': 'value1'}, [4, 5, 6], 4, 3, 2, 1]

          5)sort :对原有的列表做排序;【这个是直接调用的Python的sort函数实现的】

               mylist.sort():   函数入参有三个可选参数;没有返回值;  结果使得列表中的元素做排序;

                入参1:cmp

                入参2:key  

                入参3:reverse  指定排序规则,  True 为降序, False为升序;【若没有定义该参数,默认为False升序】

           【关于Python内建函数 sort和sorted 函数的用法,待补充。。。】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值