zoukankan      html  css  js  c++  java
  • python笔记2-数据类型:列表[List]常用操作

    序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,索引从0开始,依此类推。

    序列都可以进行的操作:包括 索引,切片,加,乘,检查成员

    列表是最常用的Python数据类型,list 是一种有序的集合列表是可变变量,即能通过列表的下标进行修改值

    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

    nums = [1, 2, 3, 'beijing', 'shanghai']  #定义列表
    num1 = [1, 2, 3, 4, 5, 6]  #List内元素为int类型
    num2 = ['a',' b', 'c', 'd'] #List内元素为str类型

    List数据类型的如下:

    增加元素:

    nums = [1, 2, 3, 'beijing', 'shanghai']  #定义列表
    nums.append('byz') #添加的值从最末尾添加,执行结果:[1, 2, 3,'beijing', 'shanghai','byz']
    nums.insert(2, '888') #在指定位置添加元素,2代表下标,执行结果:[1, 2, '888', 3, 'beijing', 'shanghai', 'byz']

    删除元素:

    nums = [1, 2, 3, 'beijing', 'shanghai'] 
    # pop(num) 方法的返回值就是删除的指定位置的元素值
    nums.pop() #默认删除最后一个元素,执行结果:[1, 2, 3, 'beijing']
    nums.pop(2) #删除指定位置的元素,执行结果:[1, 2, 'beijing']
    nums.clear()  #清空列表,执行结果:[]
    del nums[0]   #使用del关键字,删除指定位置的元素,0代表下标,执行结果:[ 2, 'beijing']
    nums.remove('beijing')  #remove()删除方法,传入的参数是 元素值,pop()删除指定位置元素,传入的参数是下标

    修改元素:

    nums = [1, 2, 3, 'beijing', 'shanghai']  #定义列表
    #修改,通过下标来修改list元素值
    nums[0] = 'hello'  #修改List内的元素值,执行结果:['hello', 2, 3, 'beijing', 'shanghai']
    nums[5] = 'haha' #修改不存在的下标,报错信息:IndexError: list assignment index out of range

    查询元素:

    nums = [1, 2, 3, 'beijing', 'shanghai']  #定义列表
    #查询,通过下标和for循环来遍历取值
    print(nums[3])   #通过下标取值,下标从0开始,执行结果:beijing
    for num in nums:
        print(num)  #通过for循环,遍历list内的元素

     List中的count(元素)方法,可以用来判断元素是否存在List内,用法如下:

    #判断元素是否存在List内,可以使用in方法,也可以使用count()方法
    names = [1, 2, 3, 'beijing', 'beijing', 'shanghai']
    print(names.count('beijing'))  #查找元素在list里面的次数,执行结果为:2
    print(names.count('hahah')) #若查找的元素不在list里面,返回结果为0
    num = names.count('beijing')
    if num >0:
        print('说明元素存在')
    else:
        print('元素不存在')

     获取List元素的下标,用法如下:

    names = [1, 2, 3, 'beijing', 'beijing', 'shanghai']
    print(names.index('beijing'))   #获取beijing这个元素的下标值,如果有多个元素时,返回第一个元素的下标值
    print(names.index('a')) #如果查找的元素不存,则报错:ValueError: 'a' is not in list
    print(names.index('beijing', 2))    #可以指定从哪个元素开始查找,2代表开始查找的下标
    print(names.index('beijing', 2, 3)) #可以指定查找范围,2,3代表开始、结束的下标值,查找范围不包含结束下标对应的元素,顾头不顾尾

    List的extend方法,更改列表的值,用法如下:

    names = [1, 2, 3, 'beijing', 'beijing', 'shanghai']
    status = ['ywq', 'lhl', 'yqq']
    print('列表合并的结果:', status + names)  #两个列表List合并,产生一个新的变量,执行结果:['ywq', 'lhl', 'yqq', 1, 2, 3, 'beijing', 'beijing', 'shanghai']
    print('这个是extend:', status.extend(names))  #extens没有返回值,执行结果为:None
    print('extens后的status:', status)   #将names列表的 添加 到status里,status的值进行了更改

    list的extend 与 appen方法的区别:

    nums = [23, 34, 21, 2, 33, 456, 12]
    status = ['a','b','c']
    print(status.extend(nums))
    print(status)  #extends是将nums的添加到 status,执行结果为一维数组:['a', 'b', 'c', 23, 34, 21, 2, 33, 456, 12]
    nums = [23, 34, 21, 2, 33, 456, 12]
    status = ['a','b','c']
    print(status.append(nums)) 
    print(status)  #append 是nums列表作为一个元素 添加到status列表的最后面,执行结果为二维数组:['a', 'b', 'c', [23, 34, 21, 2, 33, 456, 12]]

    排序sort方法,用法如下:

    nums = [23, 34, 21, 2, 33, 456, 12]
    print('nums排序前:', nums)          #执行结果:[23, 34, 21, 2, 33, 456, 12]
    nums.sort()              #默认是升序排列
    print('sort 排序后的nums:', nums)    #执行结果:[2, 12, 21, 23, 33, 34, 456]
    nums.sort(reverse=True)  #指定reverse=True,排序为降序排列
    print('降序排列的nums:', nums)       #执行结果:[456, 34, 33, 23, 21, 12, 2]

    反转数组,如下:

    nums = [23, 34, 21, 2, 33, 456, 12]
    print(nums.reverse()) #反转的是nums的值,nums.reverse()没有返回值,执行结果为None
    print(nums)  #反转后的nums,执行结果:[12, 456, 33, 2, 21, 34, 23]

    多维数组,获取元素的值:

    num = [1, 2, 9.8, ['a', 'b', ['hehe', 'haha']]]
    print(num[3][0])  #获取二维数组 a这个元素值
    print(num[3][2][0])  #获取三维数组,hehe这个元素值

    切片操作

    切片也就是另一种方式获取列表的值,它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束,获取他们之间的值,格式是name:[1:10],比如说要获取name的第一个元素到第五个元素,就可以用name[0:6],切片是不包含后面那个元素的值的,记住顾头不顾尾

    names = ['zcl','py','byz']
    print(names[0:2])   #切片的意思就是从list或者字符串里面,取几个元素,执行结果['zcl', 'py']
    print(names[:2])    #默认从0开始取值,开始下标0可以不用写,执行结果:['zcl', 'py']
    print(names[1:])    #从第1个下标开始取值,取后面所有的值,那么结束下标值可以不写
    print(names[:])     #不写开始、结束的下标时,默认取整个列表的值
    print(names[-1:])   #取最后一个值,下标从-1开始

    切片的步长:

    nums = list(range(1,21))
    print(nums[0:11])  #执行结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    print(nums[0:11:2])  #每隔2个字符取一个值,2是步长,执行结果:[1, 3, 5, 7, 9, 11]
    print(nums[::-1])  #切片步长为负数时,从后往前取值,取整个列表的值,执行结果:[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

    如果有写的不对的,欢迎指出~~

  • 相关阅读:
    最大子数组求和并进行条件组合覆盖测试
    Ubuntu 16.04 c++ Google框架单元测试
    The directory '/home/stone/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If execu
    Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
    个人博客作业三:微软小娜APP的案例分析
    补交 作业一
    补交 作业二:个人博客作业内容:需求分析
    嵌入式软件设计第12次实验报告
    嵌入式软件设计第11次实验报告
    嵌入式软件设计第10次实验报告
  • 原文地址:https://www.cnblogs.com/lhly/p/6916162.html
Copyright © 2011-2022 走看看