概述
一 列表生成式
experssion(或者函数) ------ for item1 in 序列 if 判断语句
--------------------------------------for item2 in 序列 if 判断语句
-------------------------------------for item3 in 序列 if 判断语句
案例1:
生成一个列表, 列表元素分别为[…n**n]
print([i**i for i in range(1,8)])
案例2:
找出1~10之间所有奇数, 并且返回一个列表, (所有的奇数转换为字符串)
print([str(i) for i in range(1,11,2)])
案例3:
找出1~100之间所有奇数, 并且返回一个列表,(如果能被3整除, 返回该数的平方, 否则返回该数的三次方)
print([i**2 if i%3==0 else i**3 for i in range(1,101,2)])
案例4:
给定一个列表li = [2,3,4,5,6,3,1,4,5](如果是偶数返回0, 如果是奇数返回1)
li=[2,3,4,5,6,1,4,5]
print([0 if i%2==0 else 1 for i in li ])
案例5:
找出1~100之间所有的质数
def isprime(num):
for i in range(2,num):
if num%i==0:
return False
else:
return True
print([i for i in range(2,101) if isprime(i)])
矩阵变换
- 将3*3的矩阵转换成一维数组;
li=[
[1,2,3],
[2,3,4],
[4,5,6]
]
resLi=[]
for item1 in li:
for item2 in item1:
resLi.append(item2)
print(resLi)
- 矩阵转置
实现矩阵转秩的两种方法:
1). 列表生成式
2). 内置函数zip
1.列表生成式
li=[
[1,2,3,4],
[2,3,4,5],
[4,5,6,6]
]
print([[row[i] for row in li] for i in range(4)])
2.内置函数zip
jy=list(zip(*li))
for i in jy:
print(list(i))
*li: 解包
zip: 1).打包函数, 用于将可迭代的对象作为参数, 将对象中对应的元素打包成一个个元组, 然后返回由这些元组组成的列表。
2).如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同, 利用 * 号操作符,可以将元组解压为列表
3). zip 方法在 Python 2 和 Python 3 中的不同: 在 Python 3.x 中为了减少内存,zip( ) 返回的是一个对象。
二 字典生成式
[ key:values for item1 in 序列 if 判断语句
for item2 in 序列 if 判断语句
for item3 in 序列 if 判断语句 ]
案例1:假设有20个学生,学生分数在60-100之间,筛选出成绩在90分以上的学生
import random
# stuInfo={}
# for i in range(20):
#第一种写法
# name='westos'+str(i)
# score=random.randint(60,100)
# stuInfo[name]=score
#第二种写法
#stuInfo['westos'+str(i)]=random.randint(60,100)
#最快捷简便的方法
stuInfo={'westos'+str(i):random.randint(60,100) for i in range(20)} #字典生成式
print(stuInfo)
#筛选出高于90的人
#第一种写法
# highscore={}
# for name,score in stuInfo.items():
# if score>90:
# highscore[name]=score
# print(highscore)
#第二种写法
print({name:score for name,score in stuInfo.items() if score>90})
- 将字典的key,value调换
di={'a':'apple','b':'banana','c':'peach'}
print({v:k for k,v in di.items()})
print({k:k.upper() for k,v in di.items()})
- 大小写计数合并 : key值最终全部为小写
d={'A':10,'b':0,'a':9,'B':8,'d':1}
print({k.lower():d.get(k.upper(),0)+d.get(k.lower(),0) for k,v in d.items()})
三 集合生成式
同列表一样,只是将[ ]变为了{ }
也同字典相同,只不过传的是一个参数
s={1,2,3,4,5,6}
#集合生成式
print({i**2 for i in s})
#字典生成式
print({i:i**2 for i in s})
四 判断for循环
from collections import Iterable
li=['westos',8,'hello','python']
for i in li:
print(i)
print(isinstance(li,Iterable)) #判断是否可以for循环
最后
以上就是激动水杯为你收集整理的Python的列表,集合,字典生成式的全部内容,希望文章能够帮你解决Python的列表,集合,字典生成式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复