python数据类型相关知识扩展
发布时间:2021-06-22 15:26:45
一、命名元祖
在python基础中, 我们学习元祖的时候,取元祖内部的元素都是通过索引来进行取值的。但是这种取值方式不够友好, 所以我们引入命名元祖的方式对元祖进行字典式取值,这种方式比起字典存储占用的内存较少。如果数据不需要变化,可以用命名元祖替代字典。
常规元祖取值方式:
1 2 3 4 5 6 7 8 | info = ( "flora" , 28 , "女" )
name = 0
age = 1
gender = 2 print (info[name])
print (info[age])
print (info[gender])
|
命名元祖方式:
1 2 3 4 5 6 7 8 9 10 | from collections import namedtuple info = namedtuple( "info_key" , [ "name" , "age" , "gender" ])
info_01 = info( "flora" , 28 , "女" ) print (info_01.name)
print (info_01.age)
print (info_01.gender)
print (info_01)
|
二、在自动化测试场景中的应用
我们从excel中读取用例数据第一行表头是key, 每一行的值是value。如果作为字典格式存储格式如下:
1 2 3 4 5 6 7 8 9 10 | case = [
{ "case_id" : 1 ,
"case_title" : "正常登录" ,
"data" : "test" ,
"expected" : "pass" },
{ "case_id" : 2 ,
"case_title" : "登录失败" ,
"data" : "test" ,
"expected" : "pass" },
]
|
我们可以把转成命名元祖的方式存储,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from collections import namedtuple case = [
{ "case_id" : 1 ,
"case_title" : "正常登录" ,
"data" : "test01" ,
"expected" : "pass" },
{ "case_id" : 2 ,
"case_title" : "登录失败" ,
"data" : "test02" ,
"expected" : "pass" },
] cases = namedtuple( "case" , case[ 0 ].keys()) for i in case:
result = cases( * i.values())
print (result.data) |
三、三目运算符
python中的三目运算符相当于java中的三元运算符。
条件成立执行的结果 if 过滤条件 else 条件不成立执行的结果
例如我们想要编写一个Python程序,输入两个数,比较它们的大小并输出其中较大者。相比起常规写法,三目运算符写法更加的简洁明了。
常规写法:
1 2 3 4 5 6 7 8 9 | x = int ( input ( "请输入第一个正整数:" ))
y = int ( input ( "请输入第二个正整数:" )) if x = = y:
print ( "较大的数为:" , x)
elif x > y:
print ( "较大的数为:" , x)
else :
print ( "较大的数为:" , y)
|
三目运算符写法:
1 2 3 4 | x = int ( input ( "请输入第一个正整数:" ))
y = int ( input ( "请输入第二个正整数:" )) print ( "较大的数为:{}" . format (x if x > y else y))
|
Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。在嵌套时需要注意 if 和 else 的配对。
例如我们需要判断两个数字的关系。
常规写法:
1 2 3 4 5 6 7 8 9 10 | a = int ( input ( "请输入a:" ))
b = int ( input ( "请输入b:" )) if a > b:
print ( "a大于b" )
else :
if a < b:
print ( "a小于b" )
else :
print ( "a等于b" )
|
三目运算符嵌套写法:
1 2 3 4 | a = int ( input ( "请输入a:" ))
b = int ( input ( "请输入b:" )) print ( "a大于b" ) if a > b else ( print ( "a小于b" ) if a < b else print ( "a等于b" ))
|
四、推导式
1 2 | 推导式 comprehensions(又称解析式),是 python 的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列。
推导式的作用:快速生成数据。
|
列表推导式
基本语法:[每次遍历添加到列表的内容 for x in xxx]
实例:输出一个由0-100的数字组成的列表。
常规写法:
1 2 3 4 | li = []
for i in range ( 101 ):
li.append(i)
print (li)
|
推导式写法:
1 2 | li = [i for i in range ( 101 )]
print (li)
|
基本语法:[每次遍历添加到列表的内容 for x in xxx if 过滤条件]
实例:输出一个由0-100的偶数数字组成的列表。
常规写法:
1 2 3 4 5 | li = []
for i in range ( 101 ):
if i % 2 = = 0 :
li.append(i)
print (li)
|
推导式写法:
1 2 | li = [i for i in range ( 101 ) if i % 2 = = 0 ]
print (li)
|
基本语法:[if 过滤条件 else 条件 每次遍历添加到列表的内容 for x in xxx ]
实例:0-100个数,如果是偶数则返回偶数0, 如果是奇数则返回奇数1。
常规写法:
1 2 3 4 5 6 7 | li = []
for i in range ( 101 ):
if i % 2 = = 0 :
li.append( "偶数0" )
else :
li.append( "奇数1" )
print (li)
|
列表推导式+三目运算符:
1 2 | li = [ "偶数0" if i % 2 = = 0 else "奇数1" for i in range ( 101 )]
print (li)
|
五、字典推导式
基本语法:{键:值 获取键值的表达式}
实例: 有一个列表li, 把他转换成一个元素下标为键,值为元素的字典格式的数据。
常规写法:
1 2 3 4 5 6 7 | li = [ "id" , "title" , "url" , "data" , "expected" ]
dic = {}
for i, j in enumerate (li):
dic[i] = j
print (dic)
|
字典推导式写法:
1 2 3 4 5 | li = [ "id" , "title" , "url" , "data" , "expected" ]
dic = {i: j for i, j in enumerate (li)}
print (dic)
|
到此这篇关于python数据类型相关知识扩展的文章就介绍到这了