三目运算符
java、JavaScript有类似的三目运算符:判断条件?条件为真时的结果:条件为假时的结果
在Python中,也有属于自己的三目运算符:条件为真时的结果 if 判断条件 else 条件为假时的结果;并且可以进行嵌套,不过一般情况只需嵌套两层即可
判断值是否为10
def test_one(a):
if a < 10:
print("< 10")
elif a > 10:
print("> 10")
else:
print("= 10")
def test_two(a):
res1 = “< 10”
res2 = “> 10”
res3 = “= 10”
# 三目运算符,嵌套使用
res = res3 if a == 10 else (res2 if a > 10 else res1)
return res
命名元组
Python的元组不能给元组内的数据进行命名,并且只能通过索引来获取数据。而命名元组namedtuple则可以对元组内的数据进行命名,并且除了索引,还可以直接根据元素名字来获取数据,其它特征和普通元组一样。
typename:类名称
field_names:元组中值的名称
返回一个typename命名元组类
collections.namedtuple(typename, field_names)
通过上面的方法,可以看得出,命名元祖类可以用来定义一些类对象
定义命名元组类有两种方式
1.之所以第二种方式也可以,是因为命名元组的工厂函数会在字段字符串后默认调用split()函数对字段进行拆解。
2.通过type()函数可以看到,命名元组其实是个类对象,所以它的使用方式和类对象一样
1.定义命名元组
Cat = namedtuple(‘Cat’, [‘color’, ‘age’]) # 类名,[各个属性]
Cat = namedtuple(‘Cat’, ‘color age’) # 快捷方式
print(“type:”, type(Cat)) # type: #<class ‘type’>
实例化命名元组,并定义元素值和取值
2.实例化类对象,并对属性一一赋值
cat1 = Cat(‘橘猫’, ‘橘色 1岁’)
cat2 = Cat(‘短尾猫’, [‘蓝白色’, ‘5个月’])
print(cat1, ‘type’, type(cat1)) # Cat(color=‘橘猫’, age=‘橘色 1岁’) type <class ‘main.Cat’>
print(cat2) # Cat(color=‘短尾猫’, age=[‘蓝白色’, ‘5个月’])
3.取值,可通过属性名和索引取值
print(cat1.color) # 橘猫
print(cat1[0]) # 橘猫
print(cat2.age) # [‘蓝白色’, ‘5个月’]
print(cat2[1]) # [‘蓝白色’, ‘5个月’]
命名元组的一些方法
4.修改对象属性
cat2 = cat2._replace(age=‘6个月’)
5.把cat2对象的值以collections.OrdereDict的形式返回
print(cat2._asdict()) # OrderedDict([(‘color’, ‘短尾猫’), (‘age’, ‘6个月’)])
字段、列表、命名元组的转换
6.把字典转换成命名元组
dic = {‘color’: ‘蓝白’, ‘age’: ‘8个月’} # 元素字段要一致
nt = Cat(**dic)
print(nt) # Cat(color=‘蓝白’, age=‘8个月’)
7.把命名元组转换成列表
lt = list(nt)
print(lt) # [‘蓝白’, ‘8个月’
来源:https://blog.csdn.net/weixin_44322123/article/details/100782547