推导:是从一个序列创建另一个序列的操作,例如,我们可以从列表或者元组中创建一个列表。
列表推导特点:
1.序列,表示一个我们对其元素感兴趣的列表。
2.序列的元素拥有可变的表示方法。
3.使用输入序列的元素来产生输出表达式,以此产生输出序列。
4.一个可选的谓词表达式。
一、示例代码
#先输入一个列表,元素包含了一些正数和负数,我们希望得到的输出是由那些负数元素的平方值构成的列表。
#1.定义一个由一些正整数和负整数构成的简单列表
a=[1,2,-1,-2,3,4,-3,-4]
#2.现在让我们写出列表推导
#pow()是幂函数,需要两个输入参数,第一个参数是底数,第二个参数是指数,返回的输出为幂值。
#代码解析:
#1.输入是列表a,输出为列表b。
#2.我们用变量x来表示列表中的每个元素。
#3.pow(x,2)是输出表达式,使用输入列表中的元素来计算产生输出列表。
#4.if x<0 是谓词表达式,它负责选择输入列表中的哪些元素来计算产生输出列表。
b=[pow(x,2)for x in a if x<0]
#3.最后我们看看保存在新建的列表b里的输出结果。
print (b)
二、输出结果
[1, 4, 9, 16]
三、更多内容
1.字典推导
a={'a':1,'b':2,'c':3}
b={x:pow(y,2) for x,y in a.items()}
print (b)
{'a': 1, 'b': 4, 'c': 9}
2.元组推导
#新的处理函数,代替pow()函数
def process(x):
if isinstance(x,str):
return x.lower()
elif isinstance(x,int):
return x*x
else:
return -9
a=(1,2,-1,-2,'D',3,4,-3,'A')
b=tuple(process(x) for x in a)
print(b)
(1, 4, 1, 4, 'd', 9, 16, 9, 'a')