Python中列表生成式、字典生成式

1.列表生成式

1.生成一个列表,列表元素分别为[11 22 33…99]

li = []
for i in range(1, 10):
    li.append(i ** i)
print(li)

print([i ** i for i in range(1, 10)])
print([i ** i for i in range(1, 10) if i % 2 == 0])

2.找出1~10之间的所有偶数

print([i for i in range(1, 11) if i % 2 == 0])

# S1='ABC' S2='123' A1 A2 A3..

print([i + j for i in 'ABC' for j in '123'])

Python中列表生成式、字典生成式_第1张图片

3.找出1~10之间的所有偶数.并且返回一个列表(包含以这个偶数为半径的园的面积)

import math

print([math.pi * r * r for r in range(2, 11, 2)])

def square(r):
    res = math.pi * r * r
    return res
print([square(i) for i in range(2,11,2)])

Python中列表生成式、字典生成式_第2张图片

4.找出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)])

Python中列表生成式、字典生成式_第3张图片

练习1:

1.(2018-腾讯-在线编程题)

  • 题目描述:
    给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输
    入值小于1000。
    如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))

[2,3,5,7]

  • 输入描述:
    输入包括一个整数n,(3 ≤ n < 1000)
  • 输出描述:
    输出对数
  • 示例1 :
    输入:
    10
    输出:
    2

2.列表的字符串的大写改成小写,不是字符串的去掉

3.找出/var/log目录中,所有以.log结尾的文件名或者目录名

1.给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
# 判断2~num之间有多个少质数
num = int(input('N:'))
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,1000) if isprime(i)]

# 判断素数列表中有多少个素数等于num

primepaircount = 0

for item1 in primeli:
    if (num - item1) in primeli and item1 <= num -item1:
        primepaircount += 1
print(primepaircount)

Python中列表生成式、字典生成式_第4张图片

Python中列表生成式、字典生成式_第5张图片

2.列表的字符串的大写改成小写,不是字符串的去掉
li = ['hello','Wrold',16,17,18,12.3,False,'Apple']
print([s for s in li if isinstance(s,str)])

Python中列表生成式、字典生成式_第6张图片

3.找出/var/log目录中,所有以.log结尾的文件名或者目录名
import os
print(os.listdir('/var/log'))
print([filename for filename in os.listdir('/var/log') if filename.endswith('.log')])

#给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输
入值小于1000。

Python中列表生成式、字典生成式_第7张图片

1.字典生成式

需求1:假设有20个学生,学生的分数在60~100之间,筛选出成绩在90

分以上的学生

需求2:将所有的key值都变成大写

需求3:大小写的key值合并,统一以小写输出

#需求1:
import random

stuInfo = {}

for i in range(20):
    name = 'westos' + str(i)
    score = random.randint(60, 100)
    stuInfo[name] = score
print(stuInfo)
print({name: score for name, score in stuInfo.items() if score > 90})

Python中列表生成式、字典生成式_第8张图片

#需求2:
d = dict(a=1,b=2)
print(d)
new_d = {}
for i in d:
    new_d[i.upper()] = d[i]
print(new_d)
或:
print({k.upper():v for k,v in d.items()})
#需求3:
d = dict(a=1,b=2,c=3,B=8,A=10)
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.upper(),0)+d.get(k.lower(),0)for k in d})

Python中列表生成式、字典生成式_第9张图片

你可能感兴趣的:(运维,学习,linux)