列表生成式
  X5zJxoD00Cah 2023年11月02日 46 0
'''列表生成式即List Comprehensions'''
# https://www.liaoxuefeng.com/wiki/1016959663602400/1017317609699776

list(range(1, 11)) # 生成range序列 不能用[]
[x+0 for x in range(1, 11)] # 遍历对象A中的每个元素a 对之进行处理 将结果a'保存到列表中
[x+0 for x in range(1, 11) if x > 0] # 可筛选
[m + n for m in 'ABC' for n in 'XYZ'] # 可嵌套循环 可多循环

import os
os.listdir('.') == [d for d in os.listdir('.')] # 效果一致

# for循环其实可以同时使用两个甚至多个变量
# 比如dict的items()可以同时迭代key和value
# 因此,列表生成式也可以使用两个变量来生成list
[(k + '=' + v) for k, v in {'x': 'A', 'y': 'B', 'z': 'C' }.items()] # 加()对结果无影响
[s.lower() for s in ['Hello', 'World', 'IBM', 'Apple']]

# 列表生成式中的 for循环与if else 的结合
# for 后可接if 但不能接if else # 因为跟在for后面的if是一个筛选条件,不能带else,否则如何筛选
# for 前可接if else 但不能接if # 因为for前面的部分是一个表达式,它必须根据x计算出一个结果
# 总之, 在一个列表生成式中,for前面的if else是表达式,而for后面的if是过滤条件,不能带else
[x if x % 2 == 0 else -x for x in range(1, 11)]

# 如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:
[s.lower() for s in ['Hello', 'World', 18, 'Apple', None] if isinstance(s, str) == True]
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  zLxnEsMLk4BL   2023年11月19日   31   0   0 变量名字符串bclinux
  X5zJxoD00Cah   2023年11月30日   39   0   0 GroupEmail字符串
  gBkHYLY8jvYd   2023年11月19日   22   0   0 输出格式进制字符串
X5zJxoD00Cah