Python基础 第5章 条件、循环及其他语句(2)

6. 简单推导

列表推导,是一种从其他列表创建列表的方式,其原理类似于for循环。

1 list1 = [x * x for x in range(10)]
2 print(list1)
3 结果:
4 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
1 list2 = [x * x for x in range(10) if x % 3 == 0]
2 print(list2)
3 结果:
4 [0, 9, 36, 81]
1 list3 = [(x,y) for x in range(3) for y in range(3)]
2 print(list3)
3 结果:
4 [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
# 该方案效率相对低效,更佳解决方案见下一示例
1
girls = ['alice','bernice','clarice'] 2 boys = ['chris','arnod','bob'] 3 list4 = [b + ' -> ' + g for b in boys for g in girls if b[0] == g[0]] 4 print(list4) 5 结果: 6 ['chris -> clarice', 'arnod -> alice', 'bob -> bernice']

因上述方法需要检查每种可能的配对,所以效率不高,为此推荐使用如下方法

 1 girls = ['alice','bernice','clarice']
 2 boys  = ['chris','arnod','bob']
 3 letterGirls = {}
 4 for girl in girls:
 5     letterGirls.setdefault(girl[0],[]).append(girl)
 6     #用于辅助查看setdefault执行过程,setdefault用于获取指定键相关联的值
 7     print(letterGirls)
 8     print()
 9 list5 = [b + ' -> ' + g for b in boys for g in letterGirls[b[0]]]
10 print(list5)
11 
12 结果:
13 {'a': ['alice']}
14 
15 {'a': ['alice'], 'b': ['bernice']}
16 
17 {'a': ['alice'], 'b': ['bernice'], 'c': ['clarice']}
18 
19 ['chris -> clarice', 'arnod -> alice', 'bob -> bernice']

 字典方法setdefault,见链接中9.部分:https://www.cnblogs.com/ElonJiang/p/11337757.html

7. pass、del和exec

7.1 pass - 什么都不做,占位符

7.2 使用del删除

7.3 使用exec 和 eval 执行字符串及计算结果

 

8. 章小结

8.1 关键词

打印语句,导入语句,赋值语句

代码块,条件语句,断言,循环,推导

pass、del、exec和eval

 

8.2 本章新函数

 1 chr(n) # 返回一个字符串,其中只包含一个字符,这个字符对应于传入的顺序值n(0<=n<256)
 2 eval(source[,globals[,locals]]) # 计算并返回字符串表示的表达式结果
 3 exec(source[,globals[,locals]]) # 将字符串作为语句执行
 4 enumerate(seq) # 生成可迭代的索引-值对
 5 ord(c) # 接受一个只包含一个字符的字符串,并返回这个字符的顺序值(一个整数)
 6 range([start,] stop[, step]) # 创建一个由整数组成的列表
 7 reversed(seq) # 按相反的顺序返回seq中的值,以便用于迭代
 8 sorted(seq[,cmp][,key][,reverse]) # 返回一个列表,其中包含seq中的所有值且这些值是经过排序的
 9 xrange([start,] stop[, step]) # 创建一个用于迭代的xrange对象
10 zip(seq1, seq2, ...) # 创建一个适用于并行迭代的新序列

 

posted @ 2019-08-27 08:39  ElonJiang  阅读(181)  评论(0编辑  收藏  举报