上次我们学习了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('用户已经存在,请重新输入!')

查看执行结果:

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

python自动化测试学习笔记-2-列表的更多相关文章

  1. python自动化测试学习笔记-10YAML

    之前学习的编写测试用例的方法,都是从excel中编写接口的测试用例,然后通过读取excel文件进行接口自动化测试,这种方式我们叫做数据驱动的方式,由于excel操作起来不灵活,无法实现关联关系的接口测 ...

  2. python自动化测试学习笔记-1

    一.什么是自动化 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.直白的就是为了节省人力.时间或硬件资源,提高测试效率,便引入了通过软件或程序自动化执行测试用例进行测试: 二.python ...

  3. python自动化测试学习笔记-6urllib模块&request模块

    python3的urllib 模块提供了获取页面的功能. urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capat ...

  4. python自动化测试学习笔记-5常用模块

    上一次学习了os模块,sys模块,json模块,random模块,string模块,time模块,hashlib模块,今天继续学习以下的常用模块: 1.datetime模块 2.pymysql模块(3 ...

  5. python自动化测试学习笔记-4常用模块

    常用模块 1.os 2.sys 3.random 4.string 5.time 6.hashlib 一.os模块 os模块主要用来操作文件.目录,与操作系统无关.要使用os模块首先要导入OS模块,用 ...

  6. python自动化测试学习笔记-4内置函数,处理json

    函数.全局变量 写代码时注意的几点事项: 1.一般写代码的时候尽量少用或不用全局变量,首先全局变量不安全,大家协作的情况下,代码公用容易被篡改,其次全局变量会一直占用系统内容. 2.函数里如果有多个r ...

  7. 【Python】学习笔记之列表生成式

    列表生成式 主要用于生成较为复杂的列表 常用用法 >>> [x * x for x in range(5) if x % 3 !=1 ] [0, 4, 9] #返回除以3余数不为1的 ...

  8. python自动化测试学习笔记-9测试框架

    学习了这么久的python,我们已经可以自己搭建一个简单的测试和框架了,先从简单的开始,有时我们编写接口的测试用例会用excel进行编写,以下面的接口测试用例模板为例,进行编写:

  9. python自动化测试学习笔记-8单元测试unittest模块

    官方参考文档:http://docs.python.org/2.7/library/unittest.html unittest是一个python版本的junit,junit是java中的单元测试框架 ...

随机推荐

  1. Jet --theory

    (FIG. 6. A caricature of turbulent jet and the entrainment., Jimmy, 2012) Ref: Jimmy Philip, Phys. F ...

  2. HDU 5115 (2014ACM/ICPC亚洲区北京站) D题(Dire Wolf)

    题目传送门 设dp[i][j]为杀掉区间i到j之间的狼需要付出的最小代价,那么dp[i][j]=min{dp[i][k-1]+dp[k+1][j]+a[k]+b[i-1]+b[j+1]} Java代码 ...

  3. HDU 5178 pairs(双指针)

    HDU 5178 pairs(双指针) Hdu 5178 解法:因为要求的是绝对值小于等于k,因此数字的序号关系并不重要,那么排序后使用双指针即可解决这个问题. #include<queue&g ...

  4. Codeforces 990D - Graph And Its Complement

    传送门:http://codeforces.com/contest/990/problem/D 这是一个构造问题. 构造一张n阶简单无向图G,使得其连通分支个数为a,且其补图的连通分支个数为b. 对于 ...

  5. dev的动态汉化

    放控件TcxLocalizer.将其FIlename设定成汉化文件.ini.选择Locale的值是中文,然后active=true.OK了文件如下 ini如下: [2052] CHINA_STR=&q ...

  6. IE 浏览器证书错误常见问题解答

    有时,你将看到下表的错误消息,比如,此网站的安全证书已经被吊销等等,说明网站的安全证书有问题. 站点的证书允许 Internet Explorer 与站点建立安全连接. SSL证书出现错误有时是证书本 ...

  7. Leetcode 95.不同的二叉搜索树II

    不同的二叉搜索树2 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树. 示例: 输入: 3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null ...

  8. - > 动规讲解基础讲解八——正整数分组

    将一堆正整数分为2组,要求2组的和相差最小.例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的. 整数个数n<=100,所有整数的和<=1 ...

  9. Ubuntu 16.04安装UltraCopier做为FastCopy的替代方案

    对于Linux的文件复制软件有很多,参考:http://alternativeto.net/software/fastcopy/?platform=linux 对于UltraCopier来说,是比较不 ...

  10. Ubuntu 16.04下轻量级文件搜索工具Catfish

    Catfish搜索文件速度快,但是不支持正则表达式. 安装: sudo add-apt-repository ppa:catfish-search/ppa sudo apt-get update su ...