• python自动化测试学习笔记-2-列表


    上次我们学习了python的基本概念,了解了python的变量及数据类型,并实战了条件判断,for/while循环,字符串输出,格式化输出的一些基本用法,接下来我们继续学习其他的一些数据类型。

    python的数据类型-列表

    列表是最常用的python数据类型,每一个元素都配有一个位置(角标或索引),从0开始依次类推。可以进行的操作包括索引,切片,追加,检查等。

    1、定义一个列表

    只要使用方括号括起来,并用逗号分隔不同数据项,就定义好一个列表了。例如:

    stus=['xiaoli','xiaowang','xiaotu','xiaozhao']

    那我们怎么打印出列表中的值呢,刚刚我们说了,列表有角标,我们可以通过角标找到想要的数据,如下:

    stus=['xiaoli','xiaowang','xiaotu','xiaozhao']
    print(stus[3])

    角标是3,从0开始的话那就是第四个数据,我们执行看一下结果:

    角标可以从正向计数,也可以从逆向计数,例如最后一个元素的角标为-1,依次类推,例如:

    stus=['xiaoli','xiaowang','xiaotu','xiaozhao']
    print(stus[3])
    print(stus[-1])

     我们执行一下,可以看到打印的效果是一样的:

    如果定义一个空的列表

    stus=[]

    上面我们列举的都是一维数组,python中还存在多维数组,例如:

    stus=['一年级','二年级','三年级','四年级',['一班','二班','三班','四班','五班',[1,2,3,4,5,6,7,8]]]

    print(stus)

    我们打印来看一下

    可以看到多维数组中字符串类型和int类型是可以同时存在的。

     2、增加元素

    append方法,在末尾增加一个元素,一次只能增加一个。我们来实验一下

    stus=['xiaoli','xiaowang','xiaotu','xiaozhao']
    stus.append('wangzhi')
    print(stus)

    查看打印结果:

    insert方法,将对象插入列表指定的位置,如:

    stus=['xiaoli','xiaowang','xiaotu','xiaozhao']

    stus.insert(2,'www')
    print(stus)

    当输入的下标不存在的场合,就会把数据添加到末尾,来实验一下:

    stus=['xiaoli','xiaowang','xiaotu','xiaozhao']
    stus.insert(9,333)
    print(stus)

    打印看一下结果:

    extend方法,在列表的末尾一次性追加另一个序列中的多个值(把两个列表合并):

    num1=[1,2,3,4,5]
    num2=[6,7,8,9,10]
    num1.extend(num2)
    print(num1)
    print(num2)

     查看执行结果

    我们可以看到,打印出来的num1,是合并之后的列表,列表num2是不受影响的。

     3、更新元素

    可以直接给列表中的某一个元素进行赋值,如下:

    num1=[1,2,3,4,5]
    num1[2]=11
    print(num1)

     看一下执行结果:

    可以看到角标为2的第三个元素,已经被修改为11;

     4、删除元素

    del 语句:删除操作可以使用del语句来操作,例如

    num1=[1,2,3,4,5]
    del num1[0]
    print(num1)

    我们来打印一下,看一下结果:

    可以看到删除了填写的下标元素,此处需要注意的是,下标是必须填写的,不填写就会报错,如果想要删除整个列表,可以用clear方法,如下:

    clear方法

    num1=[1,2,3,4,5]
    num1.clear()
    print(num1)

     执行看一下结果,可以看到清空了整个list

    pop方法,移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

    
    
    num1=[1,2,3,4,5]
    num2=[6,7,8,9,10]
    num1.pop(1)
    num2.pop()
    print(num1)
    print(num2)
    看一下执行结果:

    我们可以看到删除操作中,我们指定了角标,则删除了对应角标位置的数据,没有指定角标的删除了最后一个数据。

    删除操作还有一种方法,remove方法,直接删除需要删除的元素;如下:

    
    
    num1=[1,2,3,5,4,5]
    num1.remove(5)
    print(num1)

    看一下执行结果:

    我们看到上述列表中有两个[5],我们使用remove方法删除5的时候,只会删除其中的一个元素,删除第一个匹配的元素,不会全部删除。

    pop和remove的区别还在于pop会返回删除元素的值,而remove不会返回。

    num1=[1,2,3,5,4,5]
    print(num1.remove(5))
    print(num1.pop(2))

     我们看一下执行结果,remove返回的是none,pop返回了删除的数据3:

     5、反转排序

    reverse方法,使列表中的元素反向排列,例如

    num1=[1,2,3,5,4,5]
    num1.reverse()
    print(num1)

    执行结果:

    sort 方法,对列表进行排序,但只能是同类型的元素进行排序,不同类型的元素会报错,看一下:

    num1=[1,2,5,3,4,'a','z','l','t']
    num1.sort()
    print(num1)

     执行结果:

     错误提示信息显示str类型和int类型不能进行排序。我们来看一下同类型的排序:

    num1=['a','z','l','t']
    num1.sort()
    print(num1)

    查看结果:

    排序默认的话为升序排序,如果需要倒叙排序我们可以借助reverse方法,对排序进行反转,如下:

    num1=[45,23,67,111,1,9,100]
    num1.sort(reverse=True)
    print(num1)

    查看执行结果:

    index方法,从列表中找出某个元素第一个匹配项的索引位置,使用方法如下:

    num1=[45,23,67,111,1,9,100]
    print('111的索引位置是:%s'%num1.index(111))

    查看执行结果:

     6、循环

     list的一个重要特性就是可循环的,python可以对list进行解析,对list的元素进行遍历,我们看一下直接应用for循环的结果:

    num=['haha','hehe','heihei','hengheng']
    for i in num:
    print(i)

     看一下执行结果,可以看到循环一个列表,取出了列表中的每一个元素:

    在其他语言中想要遍历出列表的每一个元素就没有这么容易了,

     7、切片

     由于list可循环可遍历的特性,我们就可以对list进行切片操作,取出我们想要的元素。

    切片是list取值的一种方式。

    切片的语法格式:

    list[start:stop:step]

    star:表示取值的开始

    stop:表示取值的结束

    step:表示步长

    我们来实验一下:

     num=['haha','hehe','heihei','hengheng']
    num2=num[0:3:1]
    print(num2)

     差看执行结果:

    我们看到上述的结果,当我们结束值为3时,实际取到的值为下标为2的值,所以想取到一个列表中全部的值时,结束取值应为末尾下标+1。

    num=['haha','hehe','heihei','hengheng']
    num2=num[0:4:1]
    print(num2)

    执行结果:

    #如果切片的开始值不写的话,默认从0开始;如下:

    num=['haha','hehe','heihei','hengheng']
    num2=num[0:4:1]
    num3=num[:3:1]
    print(num2)
    print(num3)

     查看打印结果:

    #如果切片的结束值不写的话,则默认到最后,例如:

    
    
    num=['haha','hehe','heihei','hengheng']
    num2=num[0:4:1]
    num3=num[:3:1]
    num4=num[1::2]
    print(num2)
    print(num3)
    print(num4)

    查看打印结果,num4我们步长设置的2,所以是隔一个取一个数值:

    #如果步长不写的话默认是1,如下:

     num=['haha','hehe','heihei','hengheng']
    num2=num[0:4:1]
    num3=num[:3:1]
    num4=num[1::]
    print(num2)
    print(num3)
    print(num4)

     查看执行结果:

    #如果都不填写的话默认就是列表所有,步长为1,如下

    num=['haha','hehe','heihei','hengheng']
    num2=num[0:4:1]
    num3=num[:3:1]
    num4=num[:]
    print(num2)
    print(num3)
    print(num4)

     查看执行结果:

     

    当步长为负数的场合,相当于从右往左取,如下:

    num=['haha','hehe','heihei','hengheng']
    num2=num[0:4:1]
    num3=num[:3:1]
    num4=num[:]
    num5=num[::-1]
    print(num2)
    print(num3)
    print(num4)
    print(num5)

     差看执行结果:

    当步数是步数的时候,开始值和结束值也应该是负数,如下:

    num=['haha','hehe','heihei','hengheng']
    num2=num[0:4:1]
    num3=num[:3:1]
    num4=num[:]
    num5=num[::-1]
    num6=num[-1:-5:-1]
    print(num2)
    print(num3)
    print(num4)
    print(num5)
    print(num6)

     查看执行结果,负数的时候,结束标志同样需要+1:

    总结:切片操作的开始结束值是顾头不顾尾,结束值为末尾角标+1。

    8、切片同样适用于字符串

    切片:

    str='今天真开心!明天星期五'
    str1=str[1:10:1]
    print(str1)

     查看执行结果:

    字符串用于循环:

    str='今天真开心!明天星期五'
    for i in str:
    print(i)

     查看结果:

    如果需要同时打印下标和文字,用enumerate:

     str='今天真开心!明天星期五'
    for i,j in enumerate(str):
    print('%s的下标是%s'%(j,i))

     查看执行结果:

    布尔类型

    布尔类型只有True和False两种值,简单地说是非空即真,非0即真;如下:

    a=''
    b=0
    c=' '
    if a:
    print('zhen')
    else:
    print('jia')
    if b:
    print('zhen')
    else:
    print('jia')
    if c:
    print('zhen')
    else:
    print('jia')

    执行结果:

    综上我们来做一个小程序温习一下:

    要求:写一个死循环, 注册用户,提示用户注册成功,如果已经存在则提示用户已经存在。

    user=[]                               #d定义一个空列表
    while True:
    username=input('请输入用户名:')#输入用户名
    passwd=input('请输入密码:') #输入密码
    if username in user: #判断输入的用户名是否存在在列表中
    print('用户已经存在,请重新输入!')
    else:
    print('恭喜你,注册成功') #注册成功
    user.append(username) #用户名添加到列表中

     查看执行结果:

    上面我们判断用户名是否存在,用了 in 进行判断,还可以用计数的方法判断,判断输入的用户名在列表中的个数,如果个数为0则说明输入的用户名不存在,可以注册成功。例如:

    username=[]
    while True:
    name=input('请输入用户名:')
    passwd=input('请输入密码:')
    if username.count(name)==0:
    print('恭喜你注册成功!')
    username.append(name)
    else:
    print('用户已经存在,请重新输入!')

    查看执行结果:

    好了今天先学到这里,明天继续~

  • 相关阅读:
    STL逆序迭代器(reverse_iterator)
    STL容器之vector容器API(二)
    STL容器之vector容器巧用swap收缩空间
    STL容器之vector容器API(一)
    STL容器vector概念和注意事项(每次扩充都会重新开辟空间,释放原空间,即首元素地址会变一次)
    STL容器之string内存重定义
    STL容器之string与c_style类型转换
    STL容器之string插入和删除
    STL容器之string字串
    STL容器之string比较
  • 原文地址:https://www.cnblogs.com/phoebes/p/8117879.html
Copyright © 2020-2023  润新知