• DAY4 Python数据类型之列表


    一.列表

      列表:列表是由一系列按照特定顺序排列的元素组合。列表相当于一个容器,里面可以存储python的任意数据类型,在别的语言中又称为数组。

    一.  创建列表

    li = ['python',100,'java','c++']
    str_list = ['c'*3]   ---->   ['c','c','c']      #谨记:是把字符串变成三个,而不是"ccc"
    str_list = [['c'] * 3] ----> [['c','c','c']]   #谨记:列表*3,是把列表中的元素重复三遍

    二.索引,切片,步长

    (1)索引

      # 在列表中,根据索引访问到的元素,本来是什么类型就是什么类型。

    li = ['python',100,'java','c++']
    print(li[0],type(li[0]))
    >>>'python',str
    print(li[1],type(li[1]))
    >>>100,int
    

     (2)切片

      # 列表的切片得到的还是一个列表

    li = ['python',100,'java','c++']
    print(li[0:3])
    >>>['python', 100, 'java']
    

     (3)切片+步长(也可以反向步长)

    li = ['python',100,'java','c++']
    print(li[::-1])
    >>>['c++', 'java', 100, 'python']
    

     

    三.列表的增删改查

     #增

      append():追加到列表的最后

      insert(index,value):插入,把元素插入到对应位置

      extend():把序列的元素分别添加到列表中

    #append():追加
    l1 = ['alex','wusir','taibai']
    l1.append('egon')   # 追加元素
    l1.append([1,2,3])  # 追加列表
    print(l1)

    '''insert(index,value):插入,把元素插入到对应位置'''
    l1 = ['alex','wusir','taibai']
    l1.insert(1,'宝元')
    print(l1)

    '''extend()'''
    # l1 = ['alex','wusir','taibai']
    # l1.extend('abc')
    >>>['alex','wusir','taibai','a','b','c']
    # l1.extend([111,222,333])
    # print(l1)

     # 删

      pop(index):事先知道元素对应的索引值,根据索引值来删除对应的元素,并且会返回该元素,方便后续使用。

      remove():事先知道元素的名称,根据元素名称来删除。

      clear():清空列表的元素,但保留列表本身

      del语句: 1.按照索引值来删除元素(与pop不同的是不可以返回元素)

           2.可以按照切片来删除元素

            3.可以在内存级别删除整个列表

    '''pop():按照索引删除,并把删除的元素返回,方便以后使用'''
    l1 = ['alex','wusir','taibai']
    pop_item = l1.pop(0)
    print(l1)
    print(pop_item)
    
    '''remove():知道元素名称,按照名称删除'''
    l1 = ['alex','wusir','taibai']
    l1.remove('alex')
    print(l1)
    
    
    '''clear():清空列表内容,保留列表本身'''
    l1 = ['alex','wusir','taibai']
    l1.clear()
    print(l1)
    
    
    '''del
    # 1.可以按照索引删除
    # 2.可以按照切片删除
    # 3.可以在内存级别删除整个列表
    # '''
    
    l1 = ['alex','wusir','taibai']
    del l1   # 内存级别删除
    del l1[0]   #按照索引删除
    del l1[0:3]  #按照切片删除
    

     #改

    '''
    1.按照索引去修改
    2.按照切片去修改
    '''
    # l1 = ['alex','wusir','taibai']
    
    '''按照索引去修改值'''
    # l1[2] = '男神'   #l1[2]在等号左边表示索引位置
    
    '''按照切片去修改'''
    # l1[0:2] = '老男孩' #先把切片内容清空,再把后续内容迭代加入
    # print(l1)
    
    '''按照切片+步长修改:删除几个元素只能添加几个元素'''
    

     #查

       (1)按照索引,切片查找

      (2)for循环查询

    '''
    # l1 = ['alex','wusir','taibai']
    #    for i in l1:
    #       print(i)
    

     # 其他方法

    '''
    count()
    len()
    index()
    sort():用于排序
    reverse():翻转列表
    '''
    一般用于纯数字的列表排序
    l2 = [5,3,6,2,4,7]
    l2.sort()   #从小到大排序
    l2.sort(reverse=True)   #从大到小排序
    print(l2)
    
    l2 = [5,3,6,2,4,7]
    l2.reverse()
    print(l2)

    三.列表的嵌套

    l3 = ['alex', 'wusir', ['taibai',99,'ritian'], 20]
    # 1, 找到alex的e元素。
    # 2, 将wusir变成大写。
    # 3, 给此列表['taibai',99,'ritian'] 追加一个元素,'文周'
    # 4,将 'taibai' 首字母大写
    # 5,将 99 通过数字加1 的方式变成100,并放回原处。
    
    '''找到alex的e元素。'''
    # print(l3[0][2])
    
    '''将wusir变成大写。'''
    # l3[1]=l3[1].upper()
    # print(l3)
    
    '''给此列表['taibai',99,'ritian'] 追加一个元素,'文周'''
    # l3[2].append('文周')
    # print(l3)
    
    '''将 'taibai' 首字母大写'''
    # value = l3[2][0].capitalize()
    # print(value)
    
    '''将 99 通过数字加1 的方式变成100,并放回原处。'''
    

    四.知识点补充

      知识点一:列表相加,通过'+'。

    lst1 = [1,2,3]
    lst2 = ['he','hesihao']
    lst3 = lst1 + lst2
    print(lst3)
    >>>
    [1, 2, 3, 'he', 'hesihao']
    

      知识点二题目:li=[11,22,33,44,55,66,77],将列表中索引为奇数的元素,全部删除

    # 大多数人正常的想法,如下:
    l1 = [11,22,33,44,55,66,77]
    for i in range(len(l1)):
        if i % 2 == 1:
            l1.pop(i)
    print(l1)
    >>>IndexError: pop index out of range

    ---明明逻辑没有问题呀,怎么会报错,当你百思不得其解之时,你想到了debug这个功能~---
    ---通过debug,可以清楚的发现,就在你循环中删除元素时,列表中的元素的索引也在悄悄改变向前+1,嘿嘿-

    所以请谨记:循环一个列表的时候,如果对元素进行删除,列表中元素的索引值也会在发生变化

    方法一:定义一个新的列表,把符合的元素添加到新列表中,避免在原列表中进行操作。
    l1 = [11,22,33,44,55,66,77]
    l2 = []
    for i in range(len(l1)):
    if i % 2 ==0:
    l2.append(l1[i])
    l1 = l2
    print(l1)
    >>>
    [11, 33, 55, 77]

    方法二:观察后可以发现,从左向右删除,元素的索引会向前移,但是如果从右向左的话,
    就避免了这个现象
    l1 = [11,22,33,44,55,66,77]
    for i in range(len(l1),-1,-1):
       if i % 2 == 1:
         l1.pop(i)
    print(l1)
    >>>
    [11, 33, 55, 77]

    方法三:通过切片+步长
    del l1[1::2]
    print l1
    >>>
    [11, 33, 55, 77]

      

    元组:

      元组是python中的一种基本数据类型,又称为只读列表。因为不可变,所以元组可以作为字典的key。

    # 创建元组
    tuple1 = (23,24)
    print(type(tuple1))
    
    ip_port = ('192.168.1.1',8000)
    host = {}
    host['ip_port'] = ip_port
    print(host['ip_port'][0])
    

      谨记:单个元素的元组,需要添加一个“,”号.

    tu1 = ('str1')
    tu2 = ([1,2,3])
    print(type(tu1))
    print(type(tu2))
    >>>
    <class 'str'>
    <class 'list'>
    tu3 = ('str',) tu4 = ([1,2,3],) print(type(tu3)) print(type(tu4))
    >>>
    <class 'tuple'>
    <class 'tuple'>

    总结:单个元素的元组必须添加一个","号,否则不是元组。(对象)-->该对象原来是什么数据类型,它就是什么数据类型。

      

     

     

      

  • 相关阅读:
    Python开发:关于__name__
    学习笔记之cocos2dx2.1.1实现修改plist文件数据,用TinyXml解析XML
    计算机相关书籍推荐(持续更新)
    【C语言】溢出的处理及大小端模式的判断
    使用 MDSD 开发安全可靠的软件
    关于 /dev/null 与 /dev/zero
    NetBeans 时事通讯(刊号 # 108 Jul 08, 2010)
    NetBeans 时事通讯(刊号 # 109 Jul 17, 2010)
    JDK1.6 Update21 下载
    类的内联函数的实现应该放在哪里
  • 原文地址:https://www.cnblogs.com/hebbhao/p/9438544.html
Copyright © 2020-2023  润新知