关于推导式的笔记
这个推导式
list0 = [i for i in range (10)]
print(list0)
相当于
list1=[]
for i in range(10):
list1.extend([i])
print()
可以看出推导式可以减少代码量不愧是人生苦短
- 除了这种最基础的推导式,还有可以把if加进去的:
list0 = [i for i in range (0,99) if i//3 == 1]
print(list0)
相当于
list1=[]
for i in range(10):
if i // 3 == 1:
list1.extend([i])
print(list1)
- 甚至是循环嵌套加判断的推导式:
list0 = [[i,j] for i in range (0,99) if i//3 == 1 for j in range(12) if j%3 != 0]
print(list0)
相当于
list1=[]
for i in range(10):
if i // 3 == 1:
for j in range(12):
if j % 3 != 0:
list1.append([i,j])
print(list1)
以下是字典推导式:
key = [1,2,3,4,5,6] #将两个列表合并成一个字典
value = ['a','b','c','d','e','f','g']
dict1 = {key[i]:value[i] for i in range(len(key))}#按元素少的列表取值,否则会报错
print(dict1)
↓
key = [1,2,3,4,5,6]
value = ['a','b','c','d','e','f','g']
dict2 = {}
for i in range(len(key)):
dict2[key[i]] = value[i]
print(dict2)
我认为推导式优势很明显:
- 减少代码量
- 不用担心又漏掉冒号
缺点(目前已知的)是:
- 推导式中的变量(即上述代码中用到的i,j)不是全局变量,意思是无法在其它语句中使用。
- 推导式仅 列表/字典/集合 才可以使用。