Python——生成式

1. 集合生成式

print({i ** 2 for i in {1,2,3,3}})
print({i ** 2 for i in {1,2,3,9,12,9} if i % 3 == 0 })

    

2.列表生成式

格式:[expression for i in 序列 if ...]

实例:生成一个列表,列表元素分别为[1**2,2**2,3**2,...n**2]

#for循环
li = []
for i in range(1,8):
li.append(i ** 2)
print(li)

#列表生成式
print([i ** 2 for i in range(1,8)])

实例2:找出1-10之间的所有偶数,并返回一个列表(包含以这个偶数为半径的圆的面积)

import math #导入数学模块
print([math.pi * i ** 2 for i in range(1,11) if i%2==0])

 结果:

实例3:找出1~100之间所有的质数

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)

实例4:找出.log结尾的文件

import os

print(os.listdir('/var/log'))

print([i for i in os.listdir('/var/log') if i.endswith('.log')])

实例5:(2018-腾讯-在线编程题)

-题目描述:

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整

数,并输出结果。输

入值小于1000。

如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别

为(5,5),(3,7))

#[2,3,5,7]

-输入描述:

输入包括一个整数n,(3 ≤ n < 1000)

-输出描述:

输出对数

-示例1 :

``

输入:

    10

输出:

    2

 

 

 

    num = int(input())

    

    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

    """

    #[2,3,5,7] # 2 10 -2 =8

    primecount = 0

    

    for item in primeli:

        if (num - item) in primeli and item <= num - item:

            primecount += 1

    print(primecount)

   

    def zhishu(num):

        for i in range(2,num):

            if num % i == 0:

                return False

        else:

            return True

    n = int(input("Num:"))

    prime = [i for i in range(2,n) if zhishu(i)]

    print(prime)

    

    count = 0

    for i in prime:

        for j in prime:

            if n == i + j and i <= j:

                print('(%s,%s)' %(i,j))

                count +=1

    print('%s' %(count))

 

3.字典生成式

 

    d = dict(a=1,b=2)

    print(d)

    

    new_d = {}

    for i in d:

        new_d[i.upper()] = d[i]

    print(new_d)

    

    #print('key转化为大写的字典:',new_d)

    print({k.upper():v for k,v in d.items()})

 

 

    结果

        {'a': 1, 'b': 2}

        {'A': 1, 'B': 2}

        {'A': 1, 'B': 2}

   

 

 

d = dict(a=2,b=1,c=2,B=9,A=10)

 

    #输出{'a':12,'b':10,'c':2}

    new_d = {}

    for k,v in d.items():

        low_k = k.lower()

        if low_k not in new_d:

            new_d[low_k] = v

        else:

            new_d[low_k] += v

    

    print(new_d)

    

    print({k.lower(): d.get(k.lower(),0) + d.get(k.upper(),0) for k in d})

    结果

    {'a': 12, 'b': 10, 'c': 2}

    {'a': 12, 'b': 10, 'c': 2}

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_44214830/article/details/89038029