查找列表中出现最频繁的元素

使用 max() 函数可以快速查找出一个列表中出现频率最高的某个元素。

>>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2]
>>> b = max(set(a), key=a.count)
>>> b
4

统计列表中所有元素的出现次数

collections 是 Python 中的一个宝藏模块,它提供了很多特性。Counter 方法正好可以完美解决这个需求。

>>> from collections import Counter
>>>
>>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2]
>>> Counter(a)
Counter({4: 4, 2: 2, 3: 2, 1: 1, 5: 1})
 
 

key 来自一个列表,而 value 相同, 使用 fromkeys,那是相当的优雅

keys = ['a', 'b', 'c']
value = 100
d = dict.fromkeys(keys, value)
 

使用 product() 函数避免嵌套的Python循环

list_a = [1, 2020, 70]
list_b = [2, 4, 7, 2000]
list_c = [3, 70, 7] for a in list_a:
for b in list_b:
for c in list_c:
if a + b + c == 2077:
print(a, b, c)
# 70 2000 7 使用product


from itertools import product list_a = [1, 2020, 70]
list_b = [2, 4, 7, 2000]
list_c = [3, 70, 7] for a, b, c in product(list_a, list_b, list_c):
if a + b + c == 2077:
print(a, b, c)
# 70 2000 7
 
 列表推导式:

1、[x for x in data if condition]
此处if主要起条件判断作用,data数据中只有满足if条件的才会被留下,最终生成一个数据列表。

2、[exp1 if condition else exp2 for x in data]
此处if…else主要起赋值作用。当data中的数据满足if条件时,将其做exp1处理,否则按照exp2处理,最终生成一个数据列表。

 (1)使用列表推导式,生成1-10以内的所有偶数
    even = [i for i in range(1, 10 + 1) if i % 2 == 0]
print(even)
# 输出结果:[2, 4, 6, 8, 10]

(2)使用列表推导式,生成1-10以内,如果是奇数,输出“奇”,如果是偶数,则输出"偶"

    result = ["偶" if i % 2 == 0 else "奇" for i in range(1, 10+1) ]
print(result)
# 输出结果:['奇', '偶', '奇', '偶', '奇', '偶', '奇', '偶', '奇', '偶']

合并字典的最简单方法

合并字典是日常 Python 编程中的一个常见需求。有很多方法可以做到这一点。但在Python3.9 之前,所有这些方法都很难看。

从 Python3.9 开始,我们终于得到了最优雅的字典合并方式——使用联合运算符。

article_author = {'数据STUDIO': '云朵君',
'机器学习研习院': '小猴子'}
author_cities = {'云朵君': '江苏',
'小猴子': '成都'} info = article_author|author_cities
print(info)
#{'数据STUDIO': '云朵君',
'机器学习研习院': '小猴子',
'云朵君': '江苏',
'小猴子': '成都'}
 集合操作
# 交集
set1 & set2 # 并集
set1 | set2 # 差集
set1 - set2 # 补集
set1 ^ set2
生成a到z的字符串
1)
import string
letters = string.ascii_lowercase 2) letters = "".join(map(chr, range(ord('a'), ord('z')+1)))
 列表中值求和
1. sum

num_list = list(range(1, 11))

sum(num_list)

2. reduce

from functools import reduce

total = reduce(lambda x,y : x + y, num_list)
列表中数值去重
def distFunc1(a):
"""使用集合去重"""
a = list(set(a))
print(a) def distFunc2(a):
"""将一个列表的数据取出放到另一个列表中,中间作判断"""
list = []
for i in a:
if i not in list:
list.append(i)
#如果需要排序的话用sort
list.sort()
print(list) def distFunc3(a):
"""使用字典"""
b = {}
b = b.fromkeys(a)
c = list(b.keys())
print(c) if __name__ == "__main__":
a = [1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
distFunc1(a)
distFunc2(a)
distFunc3(a)

一个文本中,单词出现频率最高的10个单词

import re

# 方法一
def test(filepath): distone = {} with open(filepath) as f:
for line in f:
line = re.sub("\W+", " ", line)
lineone = line.split()
for keyone in lineone:
if not distone.get(keyone):
distone[keyone] = 1
else:
distone[keyone] += 1
num_ten = sorted(distone.items(), key=lambda x:x[1], reverse=True)[:10]
num_ten =[x[0] for x in num_ten]
return num_ten # 方法二
# 使用 built-in 的 Counter 里面的 most_common
import re
from collections import Counter def test2(filepath):
with open(filepath) as f:
return list(map(lambda c: c[0], Counter(re.sub("\W+", " ", f.read()).split()).most_common(10)))
 简单限流:
def is_action_allowed(user_id, action_key, period, max_count):
key = 'hist:%s:%s' % (user_id, action_key)
now_ts = int(time.time() * 1000) # 毫秒时间戳
with client.pipeline() as pipe: # client 是 StrictRedis 实例
# 记录行为
pipe.zadd(key, {str(now_ts): now_ts}) # value 和 score 都使用毫秒时间戳
# 移除时间窗口之前的行为记录,剩下的都是时间窗口内的
pipe.zremrangebyscore(key, 0, now_ts - period * 1000)
# 获取窗口内的行为数量
pipe.zcard(key)
# 设置 zset 过期时间,避免冷用户持续占用内存
# 过期时间应该等于时间窗口的长度,再多宽限 1s
pipe.expire(key, period + 1)
# 批量执行
_, _, current_count, _ = pipe.execute()
# 比较数量是否超标
return current_count <= max_count if __name__ == '__main__': for i in range(20):
print(is_action_allowed("lian", "reply", 60, 5))

 

python之常用方法(精)的更多相关文章

  1. python字符串常用方法介绍,基于python3.10

    python字符串常用方法-目录: 1.strip().lstrip().rstrip()2.removeprefix().removesuffix()3.replace()4.split().rsp ...

  2. Python字符串常用方法(二)

    二.字符串的操作常用方法 字符串的替换.删除.截取.复制.连接.比较.查找.分割等 1. string. lower() :转小写 2. string. upper() :转大写 3. string. ...

  3. Python Selenium 常用方法总结(不断补充)

    还有此篇内容也丰富Selenium常见元素定位方法和操作的学习介绍 selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url 实 ...

  4. 2.Python list_常用方法总结

    一.创建列表 只要把逗号分隔的不同数据项,使用方括号[],括起来即可, 下标(角标索引)从0开始,最后一个一个元素下标可以写-1 list = ['1' , '2' , '3'] list = []  ...

  5. Python Selenium 常用方法总结

    selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url  实例:driver.current_url    2.获取元素坐标 ...

  6. python字符串常用方法、分割字符串等

    一.字符串的常用方法 1.str.capitalize()  字符串首字母大写 2.str.center()  把字符串居中 3.str.isalnum() 判断字符串是否含有英文.数字,若有英文和数 ...

  7. Python+selenium常用方法(Webdriver API)

    小编整理了目前学习的Python+selenium常用的一些方法函数,以后有新增再随时更新. 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() ...

  8. 转载——Python Selenium 常用方法总结

    selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url 实例:driver.current_url 2.获取元素坐标 方法:l ...

  9. 洛谷P1080 国王游戏 python解法 - 高精 贪心 排序

    洛谷的题目实在是裹脚布 还编的像童话 这题要 "使得获得奖赏最多的大臣,所获奖赏尽可能的少." 看了半天都觉得不像人话 总算理解后 简单说题目的意思就是 根据既定的运算规则 如何排 ...

  10. python 字符串常用方法

    字符串常用方法 capitalize() String.capitalize() 将字符串首字母变为大写 name = 'xiaoming' new_name = name.capitalize() ...

随机推荐

  1. 利用分布式锁在ASP.NET Core中实现防抖

    前言 在 Web 应用开发过程中,防抖(Debounce) 是确保同一操作在短时间内不会被重复触发的一种有效手段.常见的场景包括防止用户在短时间内重复提交表单,或者避免多次点击按钮导致后台服务执行多次 ...

  2. 【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常

    问题现象 客户的java日志中有如下异常信息: 问题的风险及影响 对正常的业务流程无影响,但是影响druid的merge sql功能(此功能会将sql语句中的字面量替换为绑定变量,然后将替换以后的sq ...

  3. RabbitMQ脑裂处理

    脑裂现象: Network partition detectedMnesia reports that this RabbitMQ cluster has experienced a network ...

  4. RxJS 系列 – Join Creation Operators

    前言 我们一样从简单和常用的入手. 第一篇介绍了 Creation Operators 上一篇介绍了 Filter Operators 这一篇来到 Join Creation Operators. 参 ...

  5. 在Activity中测量控件宽高的三种方式

    在进行Android开发时,有时需要测量控件的宽和高,常用的方式有以下三种: (1)重写onWindowFocusChanged(hasFocus: Boolean)方法,在这个方法内获取控件的宽高 ...

  6. MySQL事务理论及实现

    理论大多引自<高性能MySQL>一书,不过在自测的过程中不知道是不是SQL版本的问题,还是操作有问题,在设置事务隔离级别的时候 按书上讲SET TRANSACTION ISOLATION ...

  7. Salesforce AI Specialist篇之 Prompt Builder

    本篇参考: https://salesforce.vidyard.com/watch/UUAxcUfHYGAxH3D9wV1RxJ https://help.salesforce.com/s/arti ...

  8. 墨天轮访谈 | 百度云邱学达:GaiaDB如何解决云上场景的业务需求?

    分享嘉宾:邱学达 百度云原生数据库资深技术专家 整理:墨天轮社区 导读 业务上云的大背景对弹性与可靠性的要求越来越高,传统架构的单机数据库或是分片数据库已经很难支撑快速增长的业务,导致单机瓶颈.扩容缩 ...

  9. Access to XMLHttpRequest at xxxx from origin xxx has been blocked by CORS policy: No 'Access-Control- Allow-Origin' header is present on the requested resource

    错误:控制台报错 : network 自动发起了请求: 解决办法: 找到 \node_modules\sockjs-client\dist\sockjs.js  文件 然后 crtl + g 快捷键跳 ...

  10. 修复 KubeSphere 内置 Jenkins 的 Apache Log4j2 漏洞

    作者:老Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及 Kubernetes.KubeSphere.DevOps.OpenStack.Ansi ...