Python 常用函数


python:

  • and: 从左到右扫描,返回第一个为假的表达式值,无假值则返回最后一个表达式值。
  • or: 从左到右扫描,返回第一个为真的表达式值,无真值则返回最后一个表达式值。
func = lambda x: x*2        # lamba 参数:  返回值
filter(None, L)   # 如果第一个参数为None,则默认会去除序列中所有值为假的元素
list(filter(func, sequence))  # 对sequence中的item依次执行func(item),结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回
map(func, sequence)     # 对sequence中的item依次执行func(item),结果组成一个List返回
reduce(func, sequence, starting_value)  # 对sequence中的item顺序迭代调用function,如果有starting_value可作为初始值调用,如可用来对List求和
list(zip(a, b))   # c = [(1, 4), (2, 5), (3, 6)]
a, b = zip(*c)    # a = [1,2,3]  b = [4,5,6]
 
any(substr in _ for _ in self._tags_)  # [存在True,返回True]
all()    # [所有True,才为True]
 
 
list(enumerate(seasons, start=1))       # 下标从1开始, 默认0。seasons = ['Spring', 'Summer', 'Fall', 'Winter']
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
 
 
 
from zlib import compress, decompress    # zlib支持几种不同的压缩级别,在计算成本和空间减少量之间取得平衡
compress(json.dumps(ret, ensure_ascii=False).encode()) 
json.loads(decompress(redis.get(key)))
 
dset = OrderedDict()  # 根据放入元素的先后顺序进行排序
round(80.23456, 2)   # 四舍五入,取2位小数
random.randint(65, 75)       # 随机值import random  randrange(self, start, stop=None, step=1, _int=int)
random.sample(ids, min(ct, len(ids)))
random.choice(['c3', 'c4'])  # random.choices(['c3', 'c4'])
math.ceil(10/3)   # 4
math.floor(10/3)  # 3

min(5, len(ids))   # 选取最小值,最大不超过len(ids)
在 Python中,认为以下值为假:
None       # None值
False       # False值
0              # 数值零不管它是int,float还是complex类型
'',(),[]        # 任何一个空的序列
{}             # 空的集合
 
 
if "  "  返回true
int('')  异常:ValueError: invalid literal for int() with base 10: ''
if a in b 或 for _ in b    如果b=None,会报异常'NoneType'is not iterable
info = json.loads(self.play_settings) or {}    # self.play_settings如果为none,会抛出异常。
 
 
 
a=[]时
   a[:5] or a[1:4] 不会报错
   filter(None, a)  不会报错
   b = [_ for _ in a] 不会报错
 
 
unicode_to_int:  int(_.encode('utf-8'))
    str_to_int:  int(s)   # int(float(t[1]))
 
a, b = b, a # 交换
def my_print(x, y = 2, *args, **kwargs):   # 必选参数, 默认参数, 可变参数, 关键字参数必须按顺序
s = lambda x: x + 1   # s(1)
time/datetime
  • d = datetime.strptime("2020-04-15 18:40:00", '%Y-%m-%d %H:%M:%S')
import time
from datetime import datetime, timedelta
from django.utils import timezone

>>> time.strptime('2021-06-07', "%Y-%m-%d")
time.struct_time(tm_year=2021, tm_mon=6, tm_mday=7, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=158, tm_isdst=-1)
>>> datetime.datetime.strptime('2021-06-07', "%Y-%m-%d") 
datetime.datetime(2021, 6, 7, 0, 0)
>>> t = int(d.timestamp())   # [py3]datetime转时间戳1622995200
>>> t = int(time.mktime(d.timetuple()))  # [py2]datetime转时间戳1622995200

a = time.time()  # float, 时间戳1584953908
t = time.strptime("5:30", "%M:%S")   # t.tm_min * 60 + t.tm_sec
d = ctime()      # Fri May 29 15:28:43 2020

b = datetime.now()         # datetime.datetime, 2020-03-23 16:58:54.585584
b = datetime.utcnow()         # datetime.datetime, 2020-03-23 08:58:54.585584
c = b - timedelta(days=1)  # datetime.datetime, 2020-03-22 16:58:54.585584

upload_time = datetime.fromtimestamp(create_time/1000, tz=timezone.get_current_timezone())   # 时间戳转换成datetime
today = datetime.now().date()
  • 时间比较:can't compare offset-naive and offset-aware datetimes
    ​ 因为两个时间时区不匹配,offset-naive是不含时区的类型,而offset-aware是有时区类型,两者自然不能比较。
    now = datetime.now().replace(tzinfo=pytz.timezone('Asia/Shanghai'))
today = date.today().strftime('%Y-%m-%d %H:%M:%S')
yesterday = (date.today() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')
today_zero = now.strftime('%Y-%m-%d 00:00:00')
today_0 = int(time.mktime(date.today().timetuple()))
md5
import hashlib
sign = hashlib.md5(s.encode()).hexdigest()  # 根据mac地址得到device_id

def genres(self):
return list(make_order(self.genre_set).all()) # None时返回[]

import socket
hostname = socket.gethostname()  # MAC-201906
random
random.randint(a,b) # 返回随机整数x, a<=x<=b
random.randrange(start,stop,[,step]) #返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。

random.random()   # 返回0到1之间的浮点数
random.uniform(a,b) # 返回指定范围内的浮点数。
re
  • 抽取日期
import re

text = "《焦点访谈》 2021-06-07 梦圆万春"
DATE_PAT = re.compile('(\d{4}-\d{1,2}-\d{1,2})')
s = DATE_PAT.findall(text)[0]  # 返回:'2021-06-07'

# 抽取央视新闻
name = re.findall(re.compile(r'[《|\[](.*?)[》|\]]', re.S), title)[0]
  • 匹配中文
# py3
text = "最爱 de 礼物"
arr = re.findall("[\u4e00-\u9fa5]+", text)  # 返回:['最爱', '礼物']

# py2 注意unicode编码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值