Python基础——列表推导式,集合推导式
Python基础——列表推导式,集合推导式
列表推导式
利用其它列表创建新的列表
工作原理类似for循环,即可对的得到的元素进行转换变形,基本格式如下
可有多个for语句:
当有多个for时,从左到右——>从内到外的顺序执行for
[expr for value in collection if condition]
expr:操作
condition:判断条件
实例:
将列表中的每个元素乘3得到新的列表
#定义一个列表
lis = list(range(5))
lis2 = [value * 3 for value in lis]
print(lis2)
将两个列表的元素相加组成新的列表
多个for的列表推导式
#定义一个列表
lis = list(range(3))
print('列表lis:',lis)
lis2 = list(range(3,6))
print('列表lis2',lis2)
lis4 = [lis[i]+lis2[i] for i in range(len(lis))]#对应元素相加成新列表
lis3 = [x+y for x in lis for y in lis2]#等价于嵌套循环,列表中的一个元素和另一个列表中的每个元素相加成新列表
print(lis4)
print(lis3)
输出:
- 把列表names = [‘Joe’,‘Bill’,‘Jefferson’,‘Andy’,‘Wesley’,‘Keven’,‘Tom’, ‘Alice’,‘Jill’,‘Ana’,‘Wendy’,‘Jenny’,‘Sherry’,‘Eva’]中长度大于5的元素转化成大写并添加到新的列表中
names = ['Joe','Bill','Jefferson','Andy','Wesley','Keven','Tom', 'Alice','Jill','Ana','Wendy','Jenny','Sherry','Eva']
lis2 = [value.upper() for value in names if len(value)>5]
print(lis2)
输出:
集合推导式
集合推导式类似列表推导式,区别在于用{}替代[]
{ expr for value in collection if condition }
enumerate() 函数函数访问
enumerate() 函数函数访问
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
enumerate(sequence, [start=0])
sequence :一个序列、迭代器或其他支持迭代对象。
start :下标起始位置。默认从第一个到最后一个
返回 enumerate(枚举) 对象。
实例:
#enumerate(sequence, [start=0])方法的使用
#定义一个可迭代对象,这里取数列
lis = ['e','r','t','6']
#打印数列的索引和值
for i,item in enumerate(lis):
print(i,item)
print('------------打印第一个到第三个元素的索引和值---------------')
#打印第一个到第三个元素的索引和值
for i,item in enumerate(lis[0:3]):
print(i,item)
输出:
在for循环中使用enumeration()函数
从序列中获取索引和对应的值
例题:将列表用for循环添加到字典中
#用for循环将列表中的元素添加到字典中,索引作为value对应的Key
#定义一个列表
lis = ['flower','orange','bananer','apple']
#创建一个空字典
dic = {}
#用一个for循环循环出元素以及对应的key
for i,item in enumerate(lis):
# print(i,item)
#把循环出来的元素一次添加到字典里“
dic.update({i:item})
print(dic)#打印字典
###等价于
dic2 = dict(list(enumerate(lis)))
print(dic2)
输出
range()函数
rang()函数返回一个整数序列的对象,
range(start,stop[,step])可以添加步长,步长不添加时默认为1
start:计数从start开始,默认为0 range(5)等价于range(0,5)
stop:计数到stop结束,但不包括stop
step:步长,默认为1, range(5) <=> range(0,5,1)
print('--------------使用range()函数打印100,99,98,...0---------------')
print([i for i in range(100,-1,-1)])
print('--------------使用range()函数打印0~5------------')
for i in range(5):
print(i,end='\t')
print()
#用range()创建列表
print('--------------使用range()创建列表0~5------------')
print()
lis = list(range(5))
print(lis)