快速生成数据结构

        Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。列表、元组、字典和集合推导式是Python中快速生成数据结构的便捷方式。

列表 (list) 推导式

        列表推导式用于生成列表

# 列表推导式格式
# [表达式 for 变量 in 列表]
# [out_exp_res for out_exp in input_list]
# 或者
# [表达式 for 变量 in 列表 if 条件]
# [out_exp_res for out_exp in input_list if condition]

# 生成 10 以内 数字的平方 转换字符串格式 放入 列表 l1
l1 = [str(i ** 2) for i in range(10)]
print(l1, type(l1))

<<<
    ['0', '1', '4', '9', '16', '25', '36', '49', '64', '81'] <class 'list'>

# 生成 10 以内 的奇数 放入 列表 l2 中
l2 = [i for i in range(10) if i % 2]
print(l2)

<<<
    [1, 3, 5, 7, 9]

元组 (tuple) 推导式

        元组推导式与列表推导式类似,但是使用圆括号而不是方括号,用于生成元组

# 2、元组推导式
# 得到一个生成器 可通过遍历获取 生成器 内容
# 也可通过 tuple() 函数,可以直接将生成器对象转换成元组

# (expression for item in Sequence )
# 或
# (expression for item in Sequence if conditional )

# iterable(迭代器) generator(生成器:特殊的迭代器)

g0 = (i for i in range(1, 10))
print(tuple(g0), type(tuple(g0)))
print(g0, type(g0))

# 注意,由于生成器只能被遍历一次,所以在转换为元组并打印之后,再次尝试打印生成器 g0 时
# 它将不会输出任何内容,因为生成器已经被耗尽了
# 迭代器 用尽 不会输出

for e in g0:
    print(e, end='\t')

<<<
    (1, 2, 3, 4, 5, 6, 7, 8, 9) <class 'tuple'>
    <generator object <genexpr> at 0x0000018B42918040> <class 'generator'>
    

字典 (dict) 推导式

        字典推导式用于生成字典

# 3、字典推导式

# { key: value for value in iterable }
# 或
# { key: value for value in iterable if condition }

# 表达式中要有 字典的 键、值 不然生成的 则是 集合

d0 = {f"key{i}": i ** 2 for i in range(10) if i % 2}
print(d0, type(d0))

<<<
    {'key1': 1, 'key3': 9, 'key5': 25, 'key7': 49, 'key9': 81} <class 'dict'>

集合 (set) 推导式

        集合推导式用于生成集合

# 4、集合推导式
# { expression for item in Sequence }
# 或
# { expression for item in Sequence if conditional }

a = {x for x in 'abracadabra' if x not in 'abc'}
print(a, type(a))

<<<
    {'r', 'd'} <class 'set'>

        Python 推导式是一种强大且简洁的语法,适用于生成列表、字典、集合和生成器。在使用推导式时,需要注意可读性,尽量保持表达式简洁,以免影响代码的可读性和可维护性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值