加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_汕头站长网 (https://www.0754zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

Python骚 操作从列表推导和生成器表达式出发

发布时间:2022-12-06 12:34:01 所属栏目:语言 来源:
导读:  列表推导
  Python语言魅力在于简洁,这能从最常见的创建列表体现出来,比如我们想把字符串"abc"转换成新列表["a", "b", "c"],常规写法:

  symbols = "abc"

  codes = []

  for symbol i
  列表推导
  Python语言魅力在于简洁,这能从最常见的创建列表体现出来,比如我们想把字符串"abc"转换成新列表["a", "b", "c"],常规写法:
 
  symbols = "abc"
 
  codes = []
 
  for symbol in symbols:
 
      codes.append(symbol)
 
  print(codes)  # ["a", "b", "c"]
 
  用到了for循环和列表append方法。实际上可以不用append方法,直接:
 
  symbols = "abc"
 
  codes = [symbol for symbol in symbols]
 
  这叫做列表推导,是更加Pythonic的写法。
 
  无论是编写效率还是可阅读性,列表推导都更胜一筹,可以说是构建列表的快捷方式。但是不能滥用,通用原则是,如果列表推导的代码超过了两行,就要考虑用append了。这不是规定,完全可以凭借自我喜好来选择。
 
  笛卡尔积是指多个序列中元素所有组合,我们用列表推导来实现笛卡尔积:
 
  colors = ["black", "white"]
 
  sizes = ["S", "M", "L"]
 
  tshirts = [(color, size) for color in colors for size in sizes]
 
  一行代码搞定!Life is short,use Python,list comprehension is wonderful,amazing。
 
  注意这行代码有两个for循环,等价于:
 
  for color in colors:
 
      for size in sizes:
 
  运行结果是:
 
  [('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')]
 
  如果换一下顺序:
 
  [(color, size) for color in colors for size in sizes]
 
  等价于:
 
  for size in sizes:
 
      for color in colors:
 
  运行结果是不同的,观察第2个元素:
 
  [('black', 'S'), ('white', 'S'), ('black', 'M'), ('white', 'M'), ('black', 'L'), ('white', 'L')]
 
  生成器表达式
 
  一般接触到生成器时,都要讲yield关键字,看似有点复杂,然而却很简单,生成器就像列表推导一样,只不过是用来生成其他类型序列的,比如元组:
 
  symbols = "abc"
 
  codes = (symbol for symbol in symbols)
 

(编辑:云计算网_汕头站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!