列表生成式
在一开始我们用普通的办法来生成一个列表,如下图所示
但是这样我们发现明显不是很方便,因为我们知识像建立一个列表而已,那么在这里我们就可以用一条语句直接生成一个同上面一样结果的程序,我们把这种生成方式叫做列表生成式
列表生成式语法格式:
[exp for iter_var in iterable] exp:iter_var的运算
其作用同
l = []
for iter_var in iterable:
l.append(exp)
带过滤功能的列表生成式
语法格式:[exp for iter_var in iterable if_exp]
例如:
后面通过加一个if判断,将符合条件的值放入列表
列表生成式练习
1.找出0-10以内的以偶数为半径的圆的面积
2.找出1,100之间的所有质数
3.找出/var/log/所有以‘.log’结尾的文件
(2018-腾讯-在线编程题)
- 题目描述:
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整
数,并输出结果。输
入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别
为(5,5),(3,7))
[2,3,5,7] - 输入描述:
输入包括一个整数n,(3 ≤ n < 1000) - 输出描述:
输出对数 - 示例1 :
输入:
10
输出:
2
num = int(input())
#1.先判断2~num之间有多少质数
def isPrime(num):
for i in range(2,num):
if num % i == 0:
return False
else:
return True
primeli = [i for i in range(2,num) if isPrime(i)]
print(primeli)
#1.先从列表里拿出两个数
#2.判断两个数之和是否等于num
primecount = 0
for item in primeli:
if (num - item) in primeli and item <= num - item:
primecount += 1
print(primecount)
字典生成式
类似于列表生成式,只不过是exp的变化而已
1.将字典{‘a’:1,‘b’:2}的key值遍为大写
2.设有一个字典d = dict(a=2,b=1,c=2,B=9,A=10),要求将所有key值统一小写,并且相同的key的value值相加
d = dict(a=2,b=1,c=2,B=9,A=10)
print({k.lower():d.get(k.lower(),0) + d.get(k.upper(),0) for k in d})