python 列表推导式 复合数据类型的推导式
发布日期:2021-05-07 23:05:35 浏览次数:16 分类:精选文章

本文共 1812 字,大约阅读时间需要 6 分钟。

文章目录

1. 背景

  • 在Python中,向列表中添加元素通常使用append()方法。

  • 集合添加元素需要使用add()方法,字典则通过Dict[key] = value增加键值对。

  • 此外,Python提供了推导式形式,用于向可变的复合数据类型中添加元素。

2. 列表推导式

  • 列表推导式的基本形式为:

    [表达式 for 元素 in 可迭代类型 [if 条件]]
  • 例子:

    [num for num in range(10) if num % 2 == 0] → [0, 2, 4, 6, 8]
  • 支持多重循环,循环顺序从外到内。

    [num for elem in ls for num in elem] → [1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 可以在一个元组中添加元素,元组位于可迭代容器中。

    Dict = {"python":1, "C++":2, "java":3}
highest = max(Dict.values())
lowest = min(Dict.values())
higher = [name for (name, score) in Dict.items() if score == highest]
lower = [name for (name, score) in Dict.items() if score == lowest]
print(higher)
print(lower)
  • 支持函数或复杂表达式,条件满足时添加元素。

    [fun(n) for n in range(1,10)] → [1, 4, 3, 16, 5, 36, 7, 64, 9]
  • 生成100以内的素数也是常见用途。

    [num for num in range(2,100) if 0 not in [num % d for d in range(2, int(num**0.5)+1)]]

3. 迁移到字典与集合

  • 字典:

    {i: i%2 for i in range(10) if i % 2 == 0} → {0:0, 2:0, 4:0, 6:0, 8:0}
    {i: i%2==0 for i in range(10) if i % 2 == 0} → {0:True, 2:True, 4:True, 6:True, 8:True}
    {i: i%2!=0 for i in range(10) if i % 2 == 0} → {0:False, 2:False, 4:False, 6:False, 8:False}
  • 多层循环展开时,顺序从外到内执行。

    {i:j for i in range(10) for j in range(10)} → {0:9, 1:9, 2:9, 3:9, 4:9, 5:9, 6:9, 7:9, 8:9, 9:9}
  • 集合:

    {num for num in [1,1,1,2,3,4,2,2,3,4]} → {1,2,3,4}
  • 元组和字符串不可变,不支持推导式。

  • (num for num in range(10)) 是一个生成器对象。

    for i in (num for num in range(10)): print("%d" % i, end=" ")
上一篇:python yield生成器的简单介绍
下一篇:pyhton 二进制形式操作文件 pickle函数

发表评论

最新留言

很好
[***.229.124.182]2025年04月11日 20时54分35秒