一、列表与集合推导式(解析):列表解析不是函数,区分lambda
1、列表与集合推导式的语法:
列表解析的结果是list,集合解析的结果是set,字典解析的结果是dict,后面两个是 { }。
实例:
1、列表解析的理解: 列表解析可以在脑海中将其转化为for循环的式子。
# for循环控制循环次数,同时遍历出i的值,然后去做if条件判断,最后去计算表达式。
a = 0
list1 = [a for i in range(0,4) if i<4]
list2 = [i for i in range(0,4) if i<4]
print(list1)
print(list2) #
结果:
2、一个典型的例题:
思考:由于元素乘积索引一一对应,因此可for寻找索引:
代码:
3、列表解析是可以嵌套的:
列表解析除了可以使用多个for以外,还可以将上一层的遍历值作为下一层的迭代对象:
二、字典的推导式(字典解析):
1、字典解析式的语法:
实例:
# 使用items()方法颠倒键名和值
dict2 = {'a': 10, 'b': 34}
dict3 = {v:k for k,v in dict2.items()}
print(dict3) #{10: 'a', 34: 'b'}
2、系统函数enumerate():
list1 = ['a','c','b','b']
print(list(enumerate(list1))) # enunmerate()结果是一个可迭代对象,用list转化
dict1 = {k:v for k,v in enumerate(list1)} # 字典解析
print(dict1)
# 结果:
[(0, 'a'), (1, 'c'), (2, 'b'), (3, 'b')]
{0: 'a', 1: 'c', 2: 'b', 3: 'b'}
三、列表解析求较复杂的题目:
题目:
代码1:
代码2:
list1 = [i for i in range(100,1000) if i == (i%10)**3 + (i//10%10)**3 + (i // 100)**3]
print(list1) # 列表解析,通过%与//取整数各个权位的数字。