python学习笔记013——推导式

本文详细介绍了Python中的推导式,包括列表推导式、字典推导式和集合推导式的语法及应用实例,帮助读者掌握高效的数据处理技巧。

1 推导式简介


推导式comprehensions(又称解析式),是Python的一种独有特性。

推导式是可以从一个数据序列构建另一个新的数据序列的结构体。

推导式有三种形式:

1)列表推导式 (list)

2)字典推导式 (dict)

3)集合推导式 (set)

2 列表推导式


 

是用可迭代对象生成列表的一种方法

列表推导式是表达式

2.1 基本的列表推导式

语法

[表达式 for 变量 in 可迭代对象]

[表达式 for 变量 in 可迭代对象 if 真值表达式]

示例1[1,2,3,4,5,6.......,10]

[x for x in range(1, 11)]

   L = []
   for x in range(1, 10001):
       L.append(x)

示例2:[1, 4, 9, 16, 25, ...]

[x**2 for x in range(1, 11)]

示例3:[1 3 5 7 .... 99]

[x for x in range(1, 100) if x % 2 == 1]

示例4:生成1000以内的所有素数的列表

def is_prime(x):
    """
    判断x是否为素数(或质数)
    如果为素数,返回True
    """
    if x <= 1:
        return False
    for i in range(2, x):
        if x % i == 0:
            return False
    return True

L = [x for x in range(1, 10000) if is_prime(x)]
print(L)

示例5:

s1 = "ABC"
s2 = "123"
如何生成以下列表
L = ['A1', 'A2', 'A3', 'B1', 'B2'...]

L = []
for x in s1:
   for y in s2:
       L.append(x + y)

如何生成以下列表
L = ['A1', 'B2', 'C3']

s1 = 'ABC'
s2 = '123'

a = []
for i in range(len(s1)):
    a.append(s1[i]+s2[i])
print(a)

2.2 嵌套的列表推导式

语法:

[表达式 
   for 变量1 in 可迭代对象1 if 条件表达式1
   for 变量2 in 可迭代对象2 if 条件表达式2
]

示例1:

s1 = "ABC"
s2 = "123"
如何生成以下列表
L = ['A1', 'A2', 'A3', 'B1', 'B2'...]

s1 = "ABC"
s2 = "123"
L = [x + y for x in s1 for y in s2]

3 字典推导式


 

语法:

{ 键表达式 : 值表达式 for 变量 in 可迭代对象 if 真值表达式 [for 变量 in 可迭代....]}

字典中的用法与列表中的用法类似,将 [ ] 换成  { } 即可

示例1:

生成表达式:{1:"1的平方", 4:"2的平方", 9:'3的平方', ..100:'10的平方'}

d = {x**2 : str(x)+'的平方' for x in range(1, 11)}

 

示例2:快速更换key和value

mcase = {'a': 1, 'b': 2}
mcase_frequency = {v: k for k, v in mcase.items()}
print(mcase_frequency)
# output {10: 'a', 34: 'b'}

示例3:将字典中大小写a b 键所对应的值合并

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {
    k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)
    for k in mcase.keys()
    if k.lower() in ['a','b']
}
print(mcase_frequency)
#  Output: {'a': 17, 'b': 34}

备注: D.get(key, default)   返回键 key 所对应的值,如果没有此键,则返回 default(默认 None)

参考 python的各种推导式(列表推导式、字典推导式、集合推导式)

4 集合推导式


 语法:

集合推导式语法:
  { 表达式  for 变量 in 可迭代对象 if 真值表达式  [for 变量 in 可迭代....]}

 

集合中的用法与列表中的用法类似,将 [ ] 换成  { } 即可

示例1:

squared = {x**2 for x in [1, 1, 2]}
print(squared)
# Output: {1, 4}

 注意:集合中具有特有的性质,其元素不能重复

示例2:

生成集合:{1, 8, 27, 4**4... n**n}

s = {x ** x for x in range(1, 10)}

 

另外还有更为广泛的应用:python的推导式(实用)   python-列表推倒式-轻量级循环

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值