Python实用技巧随笔记录

简洁的表达式

  • 快速构建一个字典序列
  iter = zip('abcd', range(4)) 
  d = dict(iter)
  print(d)
  # {'a': 0, 'b': 1, 'c': 2, 'd': 3}
  • 三目运算符
  Tsign = 'ok ' if True else 'ko'
  Fsign = 'ok' if False else 'ko'
  print(f'Tsign:{Tsign}; Fsign:{Fsign}')
  # Tsign:ok ; Fsign:ko
  • 推导生成类表,推导生成字典
  {x:y for x in 'abcd' for y in range(4)}
  # {'a': 3, 'b': 3, 'c': 3, 'd': 3}
  [i for i in 'abcd']
  #['a', 'b', 'c', 'd']
  • 列表推导的几种延伸写法
  [ x for x in range(10) if x%2==0 ]
  # [0, 2, 4, 6, 8]
  [ x for x in range(30) if x%2==0 and x%3==0 ]
  # [0, 6, 12, 18, 24]
  [ x+1 if x >= 5 else x*5 for x in range(10)]
  # [0, 5, 10, 15, 20, 6, 7, 8, 9, 10]
  l = [[1,2],[3,4],[5,6]]
  [ y for x in l for y in x]
  # [1, 2, 3, 4, 5, 6]

排序

  • heapq的使用
import heapq
nums = [ 1,3,2,5,4,9,0,8]
# 取值前三大的元素
heapq.nlargest(3, nums)
# 取前三小的元素
heapq.nsmallest(3, nums)
# 函数原型: heapq.nlargest(3, nums, key=lambda x: x)
# 函数原型: heapq.nsmallest(3, nums, key=lambda x: x)

过滤数据

  • filter的使用,其实还有map
  nums = [ 1,3,2,5,4,9,0,8]
  list(filter(lambda x: x>5, nums))
  # [9, 8]

说到这里就有要说reduce,reduce在python3中调整到了functools,具体使用在此不赘述了。

版权声明:除特别注明外,本站所有文章均为王晨曦个人站点原创

转载请注明:出处来自王晨曦个人站点 » Python实用技巧随笔记录

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注