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编码