三元表达式
# what:就是简写if...else...结构,且都只有一条语句
# 语法:结果1 if 条件 else 结果2
# 注意:结果1|2不一定要与条件有必然关系,条件只是选择结果1或结果2的判断依据
# 案例:获得两个数中的大值 | 小者
n1 = int(input('n1: '))
n2 = int(input('n2: '))
res = n1 if n1 > n2 else n2
print(res)
res = n2 if n1 > n2 else n1
print(res)
列表与字典的推导式
# 列表推导式
# 语法:[结果 for 结果 in 可for循环操作的对象]
# 案例:[v for v in 'abc'] => ['a', 'b', 'c']
# 案例:['奇数' if i % 2 != 0 else '偶数' for i in range(1, 11)]
# 字典推导式
# 语法:{k: v for k, v in 可for循环操作的对象(每一次循环的结果可以被解压为两个值)}
# 案例: [('a', 1), ('b', 2)] => {'a': 1, 'b': 2}
# dic = {k: v for k, v in [('a', 1), ('b', 2)]}
# 案例:{i: 0 for i in 'abc'} == {}.fromkeys('abc', 0) == {'a': 0, 'b': 0, 'c': 0}
迭代器
可迭代对象
# 有__iter__()方法的对象都称之为 可迭代对象
# 可迭代对象:可以被转化为不依赖索引取值的容器,这样的对象就叫做可迭代对象
# -- 对象.__iter__() 来生成不依赖索引取值的容器
# -- 结论:有__iter__()方法的对象都称之为 可迭代对象
# 可迭代对象.__iter__() => 和该对象有关系的迭代器对象 dict_keyiterator object
box = dic.__iter__()
# 可迭代对象有哪些:str | list | tuple | set | dict | range() | enumerate() | file | 生成器对象
迭代器对象
# 有__next__()且可以通过__next__()进行取值的容器
# 迭代器对象:可以通过__next__()的方式进行取值的容器,且取一个少一个
# -- 结论:有__next__()且可以通过__next__()进行取值的容器
# -- 注意:迭代器对象自身也拥