#列表生成式:用来生成列表,在元列表的基础上生成一个新列表,可以让代码更简洁
格式:
[exp for var in iterable]
exp:表达式
var:变量
iterable:可迭代对象
执行过程:
1,先遍历可迭代对象中的元素
2,将此元素赋值给var
3,将var的值作用到exp这个表达式上
4,将表达式的结果生成一个新列表
'''
# range在python2中返回一个列表 python3中返回的是一个可迭代对象
li=[i for i in range(1,11)] #两个变量i要一致
print(li)
l1=[1,2,3,4]
l2=[i*i for i in l1]
print(l1)
print(l2) #[1, 2, 3, 4]
#[1, 4, 9, 16]
l1=[1,2,3,4]
l2=[]
for i in l1:
l2.append(i*i)
print(l1)
print(l2)
#生成一个2n+1的数字,n的取值范围是2-8
# l4=[(2*i+1)for i in range(2,9)]
l4=[2*i+1 for i in range(2,9)]
print(l4)
格式二:
[exp for var in iterable if 判断条件]
1,遍历得到每一个元素
2,将遍历得到的元素赋值给var
3,将var的值作用到if语句上
4,如果满足条件就将满足条件的值作用到exp表达式上
5,将exp表达式的运算结果追加到新的列表
# 例子
#原列表中的数据是1-10,生成一个新列表:数据是,所有的偶数
#循环
l5=list(range(1,11))
l6=[]
for i in l5:
if i%2==0:
l6.append(i)
print(l6)
#使用列表生成式
l5=list(range(1,11))
l6=[i for i in l5 if i%2==0]
print(l6)
# 例子
l7=[10,9,5,38,2,34,56]
l8=[i for i in l7 if i>10]
print(l8)
# 例子
l9=[i for i in range(11) if i%2] #i%2表达式不写值默认是1true,0=Flase,1=True
print(l9) #这里是奇数
# 例子
格式三,嵌套循环
循环
l10=["a",'b','c','d']
l11=['f','j']
l12=[]
for i in l10:
for j in l11:
l12.append(i+j)
print(l12)
使用列表生成式:
l10=["a",'b','c','d']
l11=['f','j']
l12=[i+j for i in l10 for j in l11]
print(l12)
格式4
有else语句时使用,注意这个判断条件都放for前面
例子:
循环
l14=['Abc','DEF',10]
l15=[]
for i in l14:
if isinstance(i,str):
l15.append(i.lower())
else:
l15.append(i)
print(l15)
使用列表生成式,大写字母变小写,不是的不变
l14=['Abc','DEF',10]
l15=[i.lower() if isinstance(i,str) else i for i in l14 ]
print(l15)