美文网首页
Python的推导式

Python的推导式

作者: 那个大螺丝 | 来源:发表于2020-06-10 14:20 被阅读0次

列表推导式

[expr for val in collection if condition]

  • 等同于以下的for循环
result = []
for val in collections:
    if condition:
        result.append(expr)
  • 举例
strings = ['a', 'as', 'bat', 'car', 'dove', 'python']

list1 = [x.upper() for x in strings if len(x) > 2]

print(list1)

字典的推导式

dict_comp = {key-expr: value-expr for value in collection if condition}

  • 集合的推导式

set_comp = {expr for value in collection if condition}

  • 举例

strings = ['a', 'as', 'bat', 'car', 'dove', 'python']

loc_mapping = {val: index for index, val in enumerate(strings)}
print(loc_mapping)

unique_lengths = {len(x) for x in strings}
print(unique_lengths)

unique_lengths2 = set(map(len, strings))
print(unique_lengths2)


嵌套列表推导式

  • 请牢记for表达式的顺序应当和你写嵌套for循环来替代列表推导式的顺序一致:

flattened2 = []
some_tuples = [['John', 'Emily', 'Michael', 'Mary', 'Steven'], ['Maria', 'Juan', 'Javier', 'Natalia', 'Pilar']]


for tup in some_tuples:
    for x in tup:
        flattened2.append(x)

print(flattened2)

net_list = [[x for x in tup] for tup in some_tuples]
print(net_list)
  • 举例

all_data = [['John', 'Emily', 'Michael', 'Mary', 'Steven'], ['Maria', 'Juan', 'Javier', 'Natalia', 'Pilar']]

names_of_interest = []
for names in all_data:
    enough_es = [name for name in names if name.count('e') >= 2]
    names_of_interest.extend(enough_es)

print(names_of_interest)

result = [name for names in all_data for name in names if name.count('e') >= 2]
print(result)

some_tuples = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
flattened = [x for tup in some_tuples for x in tup]

print(flattened)


生成器表达式

  • 用生成器表达式来创建生成器更为简单。生成器表达式与列表、字典、集合的推导式很类似,创建一个生成器表达式,只需要将列表推导式的中括号替换为小括号即可:

  • 生成器是构造新的可遍历对象的一种非常简洁的方式。普通函数执行并一次返回单个结果,而生成器则“惰性”地返回一个多结果序列,在每一个元素产生之后暂停,直到下一个请求。如需创建一个生成器,只需要在函数中将返回关键字return替换为yield关键字:

gen = (x ** 2 for x in range(100))
print(gen)


def _make_gen():
    for x in range(100):
        yield x ** 2


gen2 = _make_gen()

s = sum(x ** 2 for x in range(100))

s2 = sum([x ** 2 for x in range(100)])

d = dict((i, i ** 2) for i in range(5))

d2 = dict([(i, i**2) for i in range(5)])

print(s)
print(s2)
print(d)
print(d2)

相关文章

  • python推导式

    python的各种推导式(列表推导式、字典推导式、集合推导式) 推导式comprehensions(又称解析式),...

  • 024python的各种推导式

    python的各种推导式(列表推导式、字典推导式、集合推导式) 推导式comprehensions(又称解析式),...

  • Python中各种推导式

    Python的各种推导式(列表推导式,字典推导式,集合推导式) 列表(list)推导式 字典(dict)推导式 集...

  • 列表推导式

    列表推导式 推导式 推导式(又称解析器),是 Python 独有的一种特性。使用推导式可以快速生成列表、元组、字典...

  • Python 推导式

    Python v3.7.0 推导式(comprehensions),是Python的一种独有特性。推导式是可以从一...

  • Python高级用法-推导式

    Python高级用法-推导式 1.什么是推导式 Python推导式是从一个数据集合构建另外一个新的数据结构的语法结...

  • #抬抬小手学Python# 列表推导式与字典推导式

    列表推导式与字典推导式 在 Python 中推导式是一种非常 Pythonic 的知识,本篇博客将为你详细解答列表...

  • Python——生成器、列表生成式、迭代器

    Python列表生成式 列表推导式的一般语法 这种语法等价于以下代码 下面举一些列表推导式的栗子: Python中...

  • python代码简写(推导式 if else for in)

    python代码简写(推导式 if else for in) python中,(x for y in z for ...

  • Python 入门之推导式

    Python 入门之 推导式 推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式 1、推导式 (1)列表...

网友评论

      本文标题:Python的推导式

      本文链接:https://www.haomeiwen.com/subject/rqzbyhtx.html