Python学习之生成式(集合,列表及字典)

一.集合生成式

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

结果:
{1, 4, 9}
{1}

二.列表生成式

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

  • 生成一个列表,列表元素分别为[1 ** 2,2 ** 2,3 ** 2,…n ** 2]
方法1(一般的方法):
li = []
for i in range(1,8):
    li.append(i ** 2)
print(li)

结果:
[1, 4, 9, 16, 25, 36, 49]

方法2(生成式方法):
print([i ** 2 for i in range(1,8)])

结果:
[1, 4, 9, 16, 25, 36, 49]
  • 找出1-10之间的所有偶数,并返回一个列表(包含以这个偶数为半径的圆的面积)
import math
a = math.pi
print(a)
print(['%.3f' %(a*pow(i,2)) for i in range(2,11,2)])

结果:
['12.566', '50.265', '113.097', '201.062', '314.159']
  • 找出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)])

结果:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
  • 找出/var/log目录下以.log结尾的文件
import os #导入系统交互模块
# print(os.listdir('/var/log')) #打印/var/log里的所有内容

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

结果:
['boot.log', 'yum.log', 'wpa_supplicant.log', 'Xorg.0.log']

三.字典生成式

  • 将字典中的所有key值转变成大写
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()})

结果:
{'a': 1, 'b': 2}
{'A': 1, 'B': 2}
{'A': 1, 'B': 2}
  • 将字典中小写(a…)与大写(A…)的value并值,最后以小写输出 d = dict(a=2,b=1,c=2,B=9,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)
#方法二:
#用get方法,若key值存在则返回value值u,若不存在,则返回你传进的value值
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}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值