zoukankan      html  css  js  c++  java
  • Python-列表和元组

    一、列表定义

    列表是python中一种基本的数据结构。list、数组、array都指的是列表。

    列表为它的每一个元素分配一个下标,标记该元素的位置。也可以将下标叫做索引、角标、编号。下标从0开始计数。另外最后一个元素的下标是-1。

    定义列表时,用中括号[]将其中的元素括起来,不同元素之间用逗号“,”分隔。

    例如:stus=['小红','小黑','小白','小兰']

    列表stus中有4个元素,索引分别为0,1,2,3。“小红”的索引是0。“小兰”的索引是3,也是-1。

      

    二、列表操作

    1、增

    给列表增加元素有两种方法,append和insert。

    append:在列表末尾增加一个元素

    insert:在指定位置增加元素

    例如:

      

    2、删

     删除元素的方法有pop,remove,del,clear。

    pop:删除指定位置的元素,格式为:list.pop(索引)

       

    remove:删除指定元素,格式为:list.remove(元素)

      

    del:删除指定位置的元素,格式为:del list[索引]

      

    clear:清空列表,格式为:list.clear()

      

    3、修改

     修改时,直接对对应元素赋值即可,如果指定下标不存在,会报错

      

    4、查询

    (1)查询指定索引的元素,直接用 list[索引]

       

    (2)查询元素的索引,格式为:list.index(元素),如果元素不存在,会报错

      

    (3)查询某元素在列表中出现的次数,格式为  list.count(元素)

       

    5、其他操作

    (1)反转

    反转的语法格式为:list.reverse()

      

     (2)排序

    排序的语法格式为:list.sort(),默认为升序排序。  降序为:list.sort(reverse=True)

      

    字母也可以排序

      

    (3)列表合并

    用“+”号可以直接将2个列表合并为一个

       

    一个列表显示多次,可以用list*n的格式,n是几,就重复几次

      

    三、多维数组

    多维数组就是数组里有嵌套了数组,取值时需要一级级的取。

    下图里,我们想取到 'usa' 这个元素。

    首先 infos[-1]指的是最外层列表的最后一个元素,也就是 ['Rose','student',92.5,['english','usa',25]]

    infos[-1][-1]指的是  ['Rose','student',92.5,['english','usa',25]]列表的最后一个元素,也就是['english','usa',25]

    最后用 infos[-1][-1][0] 取到 ‘usa’ 这个元素。

    四、切片

    (1)切片是list取值的一种方式,取出的值仍为列表格式。

    取值的格式为:list[下标1:下标2],取出下标1到下标2之间的序列,包含下标1,不包含下标2。即顾头不顾尾。

    这样说比较不容易理解,看下面的例子。

     

     names[1:4],顾头不顾尾,即取出下标为1,2,3的元素,运行结果如下图:

    另外,如果从头开始取,取到后面某个下标结束,那么开头的下标可以省略不写。

    如果从某个小标开始取,取到末尾结束,那么末尾的下标可以省略不写。

    如果开头和末尾列表都不写,则取所有的元素。

    (2)设置步长

    设置步长的语法格式为:list[下标1:下标2:步长],步长不写的话,默认为1.

    例:取列表lis下标为0-9,间隔为2的元素。

      

    步长为正数,从左边开始取值;步长为负数,从右边开始取值。

    例如:

      

    那么我们可以发现,如果步长设为-1,看上去好像字符串也反转了,如下图;

       

    看上去好像是和reverse效果一样,其实是有区别的。list.reverse()是将整个列表的元素反转了,而list[::-1]没有改变list,只是反向打印了这个list的元素。

      

      

    五、列表循环

    可迭代对象指的是可以循环的,字符串,列表都是可迭代对象,int和float类型的都不是可迭代对象。

    for循环在循环可迭代对象的时候,每次循环的都是里面的元素。列表可直接循环里面的元素,如下:

       

    例:统计作业上交的情况。

    stus=[
    	  ['小明','未交'],
    	  ['小白','已交'], ['小紫','已交'],
    	  ['小红','未交'], ['小绿','未交'],
    	  ['小黄','未交'], ['小黑','已交']
    	]
    pass_list = [] #交作业的名字
    fail_list = [] #没交作业的名字
    
    for info in stus:
        if info[-1]=='已交':
            pass_list.append(info[0])
        else:
            fail_list.append(info[0])
    print('未交作业的同学是%s,一共有%d人'%(fail_list,len(fail_list)))
    print('已交作业的同学是%s,一共有%d人'%(pass_list,len(pass_list)))
    

    运行结果为 

    六、元组的定义

    定义元组用小括号(),如果元组中只有一个元素,需要在后面加逗号,否则数据类型是元素的类型,不是元组。如下:

      

      

    七、元组的操作

    元组和列表的区别是:元组里面的元素无法修改,增删改都不行。

    1、查询

    只有两种查询操作,index和count

    index:找到元素的下标,语法格式为,tuple.index(元素)

     count:找到元素出现的次数,语法格式为,tuple.count(元素)

      

     2、切片

     元组切片和列表一样

      

    3、循环

    元组也可以循环

      

     八、小练习

    验证用户名是否合法。合法的用户名需满足以下条件:(1)未被注册过;(2)长度在6-12位之间;(3)最多输入3次。

    all_users = ['Lily001','Rose002','John003','Bob004','Alice005']
    for i in range(3):
        username = input('请输入您的用户名:').strip()
        if len(username)>5 and len(username)<13:
            if all_users.count(username)>0:
                print('这个用户名已被注册!')
            else:
                print('名字不错,赶紧去注册吧!')
                break
        else:
            print('用户名长度不合法!长度应在6-12之间')
    else:
        print('失败次数过多')
    

      

  • 相关阅读:
    如何确定软件测试结束?
    为什么会有软件测试这一栏目?
    SQL Server 新建 数据库关系图 时弹出警告提示此数据库没有有效所有者,因此无法安装数据库关系图支持对象。
    IIS 7 实现http跳转https 重定向方法
    Centos 利用yum安装卸载软件常用命令[转载]
    VMware虚拟机中Centos7的IP地址设置方法
    【3】工厂方法模式
    【2】简单工厂模式
    【1】Singleton模式(单例模式)
    SVN提交小结
  • 原文地址:https://www.cnblogs.com/zhxwind/p/8651863.html
Copyright © 2011-2022 走看看