2022.07.17 DAY17
1. 使用zip()并行迭代
-
通过zip()函数对多个序列进行并行迭代,zip()函数在最短序列"用完"时就会停止。
-
测试代码:
# zip def test(): names = ("First", "Second", "Third", "Fourth") ages = (28, 26, 20, 25) jobs = ("老师", "程序员", "学生", "公务员") for name, age, job in zip(names, ages, jobs): print("{0}--{1}--{2}".format(name, age, job)) if __name__ == '__main__': test()
-
执行结果:
First--28--老师 Second--26--程序员 Third--20--学生 Fourth--25--公务员
2. 推导式创建序列
1. 列表推导式
-
列表推导式生成列表对象,语法如下:
- [表达式 for item in 可迭代对象]
- [表达式 for item in 可迭代对象 if 条件判断]
-
代码测试:
# 列表推导式 def test2(): a = [x for x in range(1, 5)] b = [x * 2 for x in range(1, 5)] c = [x * 5 for x in range(1, 20) if x % 5 == 0] print(a) print(b) print(c) if __name__ == '__main__': test2()
-
执行结果:
[1, 2, 3, 4] [2, 4, 6, 8] [25, 50, 75]
2. 字典推导式
-
字典推导式生成字典对象,格式如下:
- {key_expression : value_expression for 表达式 in 可迭代对象}
- 类似于列表推导式,字典推到也可以增加if条件判断、多个for循环。
-
代码测试:
# 字典推导式 def test3(): # 统计文本中字符出现的次数 myWords = "I Love You, File, Edit, All Right." char_count = {c: myWords.count(c) for c in myWords} print(myWords) print(char_count) if __name__ == '__main__': test3()
-
执行结果:
I Love You, File, Edit, All Right. {'I': 1, ' ': 6, 'L': 1, 'o': 2, 'v': 1, 'e': 2, 'Y': 1, 'u': 1, ',': 3, 'F': 1, 'i': 3, 'l': 3, 'E': 1, 'd': 1, 't': 2, 'A': 1, 'R': 1, 'g': 1, 'h': 1, '.': 1}
3. 集合推导式
-
集合推导式生成集合,和列表推导式的语法格式类似:
- [表达式 for item in 可迭代对象]
- [表达式 for item in 可迭代对象 if 条件判断]
-
代码测试:
# 集合推导式 def test4(): a = {x for x in range(1, 100) if x % 9 == 0} print(a) if __name__ == '__main__': test4()
-
执行结果:
{99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
4. 生成器推导式(生成元组)
-
元组是没有推导式的。
-
一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代发现数据已经没有了。
-
代码测试:
# 生成器推导式 生成元组 def test5(): gnt = (x for x in range(1, 100) if x % 9 == 0) for x in gnt: print(x, end=' ') for x in gnt: print(x, end=' ') if __name__ == '__main__': test5()
-
执行结果:
9 18 27 36 45 54 63 72 81 90 99