python初学一(list的处理方式)

一、列表的基本知识: 

  • 1、列表是可变元素,列表内部函数操作大多是操作list本身,即它原来的数据发生变化,大多内置函数没有返回值;也
  •       有存在返回值的:------------- 例如:list(iterable)、tuple(iterable)     它们的返回值是修改的内容,用变量接收打印,
  •       原数据不变。
  • 2、列表的深浅拷贝的区别(浅拷贝:一级元素相互独立,二级及以上元素引用{共用空间};深拷贝:完全拷贝) 
  • 3、引用:常见的 赋值 操作就是 引用(注意引用与浅拷贝之间的区别) ,列表操作中,append 可变元素就是一个
  •                  引用。

             概念:列表是由一系列按特定顺序排列的元素组成,列表能存储多种类型的数据,其中的元素之间可以没有任何关系

    1、列表的创建:

       ①、直接创建:

                  

       ②、list与str间的相互转化:                   

                    列表与字符串互相转化:                                

str >>> list
    1、list(iterable)系统函数    #  函数对象必须是iterable,list(iterable);
        print(list("abc"))  #结果:['a','b'.'c']
    2、str.split()  
        print("我们_去_上海".split('_'))    结果:['我们','去','上海']
          # 数据库中存储的类型数据(str类型)
list >>> str
    1、如果list元素全是字符串, 用str.join(iterable)# join的本质:字符串拼接
        print('_'.join(['我们','去','上海']))
    2、如果不全是字符串:
        for 循环 遍历元素,转化为str后拼接

                                                 

     2、列表拼接(+)与重复(*)

1、列表的拼接
str1 = [1,2,]
str2 = ['a','b']
print(str1+str2) ------ 相当于 str1.expend(str2),结果:[1,2,'a','b']
2、列表的重复
str1 = [1,2,]
print(str1*3)    ---------- 结果:[1,2,1,2,1,2]

二、list 数据的基本操作方法:

   1、索引与切片:

     (1)索引:

  •            特点: 与str相同 ,用 下标 取值
list1 = [2,3,4,5]
print(list1[2])    ----------- 下标以0 开始

    (2)切片: 

  •            特点:与str 用法类型,不过结果是一个 列表  ,区间 前闭后开

                   https://blog.csdn.net/qq_16555103/article/details/83625995  --------  第三节

================================ 切片赋值 与 索引赋值的区别 ========================
1、切片赋值
list1 = [1,2,4,6]
list1[1:3] = 'abcdefghigk'
print(list1)      ---------- [1, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 6]
2、索引赋值
list2 = [1,2,3,4]
list2[2] = 'abcdefgt'
print(list2)      ---------- [1, 2, 'abcdefgt', 4]

三、列表元素的增删改查:

    1、增加元素:   append、extend、insert 

  •      特点:list内部函数,list数据类型不可用赋值的方法增加列表的元素,区别于dict。

        ①append  追加 : list.append()

                                 append函数没有return值,添加元素保存在原list中。list

                               

  •           注意:列表操作中,append 可变元素 是一个引用
list1 = [1,2,'a']
list1.append([6,7,8])
print(list1)        # 结果 [1, 2, 'a', [6, 7, 8]]  注意与extend的区别。

       ②expend 扩展 :list.extend()

                  

list1 = [1,2,'a']
list1.extend([777,888,9999])
print(list1)        #结果   [1, 2, 'a', 777, 888, 9999]

 

         ③insert 插入: list.insert(index,值)

                 

list1 = [1,2,'a']
list1.insert(2,[99,000])      # 先索引 后插入值
print(list1)          # 结果  [1, 2, [99, 0], 'a']   

    2、删除元素(pop、remove、del 关键字):

         ① list.pop(index):根据 索引,得到 值

           

list1 = [1,2,'a'] 
p = list1.pop()   --------------- 支持索引  默认最后一个  return删除元素
print(list1)      --------------- 删除元素后的list
print(p)          --------------- return删除元素
# 结果   [1, 2]
         a

        ② list.remove(值):根据值 删除,每次只删一个

  •      特点:不知道索引时,指定元素删除,重复元素时  默认每次只删除第一个,没有return值(None)。删除所有用
  •                  while循环。
list1 = [1,2,'a',9999,2222,9999,9999]
p = list1.remove(9999)
print(list1)   -------  结果:[1,2,'a',2222,9999,9999]
print(p)       -------  结果:9999
===============================================================================
while 值 in list1:            ---------- 删除所有
    list1.remove(值)

        ③ 关键字del: 根据 索引,不可访问

  •         用法:del list[index] ,不加索引时全部删除,即删除这个变量,注意与  clear 区别 
list1 = [1,2,'a',9999,9999,9999]
del list1[3]           #
print(list1)

               

    3、修改元素和查看元素:

        ①查找元素: 

                        用索引的方式查找元素。

        ②修改元素:

  •           特点:用索引赋值的方式修改元素 : list1[index] = '    ',但是不可以利用赋值操作增加 索引范围 以外的元素
  •                   (增加用append、extend)

    4、查找元素是否存在: in、not in  返回bool值

list1 = [1,2,3,4,56]
if 3 in list1:
    print('存在3')
else:
    print('不存在3')

四、list内置函数:

        1、list常用的系统函数:max()  取最大值

                

  •     注意:① 根据每个元素第一个字母,max 与  min 是按照ASCII码来排序,如果元素是列表,比较大小是按照列表
  •                     第一个元素来比较。
  •                ② max 、min 也可用于字符串中。
  •                ③ 字符串与数字无法比较
  •               
list1 = [1,2,'a',9999,9999,9999]   
list2 = ['a78','123','sh']
list3 = [747,888,989]
print(max("29889aA7"))     
print(list1)                #报错  列表中int与str无法比较
print(list2) 
print(list3) 

    2、计数count, 扩展extend、索引index:

            

list1 = [1,2,'a',9999,9999,9999]
print(list1.count(9999))              ----- 结果:3
print(list1.index(9999,4,5))          ----- 结果:4  # 三个参数,只返回第一个值的索引;如果不存在报错

   3、反向reverse,排序sort,清空clear,复制copy:                      

                   

  •                          注意     list.sort() 没有返回值,改变原list,默认从小到大,list.sort(reverse=True) ---- 降序
  •                                      list.copy() 相当于浅拷贝
  •                  

         (1)list.clear() 注意事项:

               清空clear()请注意,可以用 赋值 空列表([]) 来清空。

list1 = [1,2,3]
list2 = []
list2.append(list1)           append追加列表时相当于追加一个 引用,他们共同使用一个内存空间,因此清空list1时list2也跟着清空。
print(list1,list2)
list1.clear()      
print(list1,list2)         # 结果 :  [1, 2, 3] [[1, 2, 3]]
                           #         [] [[]]


#   改进1、
import copy
list1 = [1,2,3]
list2 = []
list2.append(list1)
list2 = copy.deepcopy(list2)             深拷贝         
print(list1,list2) 
list1.clear()               
print(list1,list2)         # 结果 :   [1, 2, 3] [[1, 2, 3]]
                                      [] [[1, 2, 3]]
# 改进2、
        可以将源代码中 list1.clear() 改为 list1 = [] 。 打印结果与 改进1 结果相同。           

五、深浅拷贝与引用:

                       https://blog.csdn.net/qq_16555103/article/details/83748253

     1、引用:

                 直接赋值:其实就是对象的引用(别名)。

     2、深浅拷贝:

                 python 中深浅拷贝需要 引入 模块 copy 

       (1)浅拷贝:         

       (2)深拷贝:     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值