Python3之高级特性:列表,字典,集合的推导式

列表推导式

为什么要有列表推导式:

我们创建一个L = [1,2,3,4]很容易:我们创建一个包含1-100的列表:L = List(range(100)) 这也很容易,但是如果我们想要创建一个不是这种连续的数据集合的列表,例如生成一个1-100的x*x的数据集合的列表怎么办,我们需要使用for循环,如下:

for x in range(1, 11):
    L.append(x * x)

那么我们有没有一种更简洁的方式来实现呢?这就需要使用列表推导式了

列表推导式定义:用可迭代对象依次生成带有多个元素的列表的表达式

非嵌套列表推导式:
    作用:
        用简单方法生成列表
    语法:
              3            2             1
        [表达式 for 变量 in 可迭代对象]
        或
        [表达式 for 变量 in 可迭代对象 if 真值表达式]
    示例:
         一下生成一个值为1~9的平方的列表
         L = [x*x for x in range(1,10)] # [1,4,9,16,25,36,49,64,81]

那么生成一个1-100的x*x的数据集合的列表就可以这样写:

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

列表推导式的嵌套:
    语法:
    [ 表达式1
    for 变量1 in 可迭代对象1 if 真值表达式1
    for变量2 in 可迭代对象2 if 真值表达式2
    ......]

   注:一般来说三层和三层以上的嵌套就很少使用了。

示例:

#将L1中的全部元素与L2中的全部元素依次相乘后放到列表L3中
L1 = [1,2,3,4,5]
L2 = [2,4,6]
L3 = [x*y for x in L1 for y in L2]
print(L3)

输出结果:
[2, 4, 6, 4, 8, 12, 6, 12, 18, 8, 16, 24, 10, 20, 30]

在for循环是可以同时使用两个甚至对个变量的

dict = {'1':'a', '2':'b', '3':'c'}
L1 = [key + ' is ' + value for key, value in dict.items() if True ]
print(L1)

 

字典

作用:  用可迭代对象依次生成字典内元素的表达式
语法:
    {键表达式:值表达式  for 变量 in 可迭代对象 [if 真值表达式]}
    注: []的内容代表可省略

d = {x : x **2 for x in range(7)}
d----->{0:0,1:1,2:4,:3:9,4:16,5:25,6:36,7:49}

d = {x : x **2 for x in range(7) if x % 3 ==0}
d ----> {0:0,9:81,3:9,6:36}

集合

用可迭代对象生成集合的表达式
语法:
    {表达式 for 变量 in 可迭代对象 [if 真值表达式]}
    []括号部分内容代表可省略
 

示例:
L = [2,3,5,7,3,5,7,11]
s = { x ** 2 for x in L} # s={4,9,25,49,121}
集合推导式的嵌套于列表推导式大致相同
{x + y for x in "ABC" for y in "123"}

注:其实列表推导式,字典推导式和集合推导式原理是一样的,并且都是有推导式的嵌套的,只要明白了一个其他的就都会明白了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值