我写的 Python 代码,同事都说好

要在自己的电脑访问部署在同事电脑上的 Python 服务 要在自己的电脑访问部署在同事电脑上的 Python 服务,基本的操作步骤包括确保两台电脑可以互相通信、正确配置同事Python 服务以及你的电脑能够访问该服务。如果服务运行在 Docker 容器内,需要确保容器的端口映射正确。,只能在同事电脑上访问。为了使其他电脑能够访问,应该将它绑定到。或类似工具将本地服务暴露到互联网上,从而让你通过外部地址访问。这将使服务在所有网络接口上监听,包括局域网 IP 地址。如果同事的服务仅限于本地网络,你们也可以使用。或同事的局域网 IP 地址。 阅读详情

原文链接: 我写的 Python 代码,同事都说好

人生苦短,我用 Python。

程序员的追求就是不写代码,早日财务自由。不对,一不小心把实话说出来了,应该是将代码写得简洁,优雅。

Python 程序员的追求则是 Pythonic,正好在 Python 这门语言中,「隐藏」了特别多方法,可以使代码变得简洁,优雅,与众不同。

我在这里总结了一些常用操作,特别是关于列表和字典,分享给大家。

第一个字母大写

这个方法有点意思,无意中发现的。

>>> s = "programming is awesome"
>>> print(s.title())
Programming Is Awesome

列表合并

第一种方式:使用 +

>>> a + b
[1, 2, 3, 4, 5, 6]

第二种方式:使用 extend 关键字。

>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

后两种方式明显更加优雅,推荐使用。需要说明的一点是,如果列表很大的话,+ 会比较慢,使用 extend 更好。

列表元素去重

使用 set() 对列表元素进行去重。

>>> a = [1, 2, 3, 4, 2, 3]
>>> list(set(a))
[1, 2, 3, 4]

列表排序

使用 sort() 或内建函数 sorted() 对列表进行排序。它们之间的区别有两点:

  1. sort() 方法是对原列表进行操作,而 sorted() 方法会返回一个新列表,不是在原来的基础上进行操作。
  2. sort() 是应用在列表上的方法,而 sorted() 可以对所有可迭代的对象进行排序操作。
# sort()
>>> a = [1, 2, 3, 4, 2, 3]
>>> a.sort()
>>> a
[1, 2, 2, 3, 3, 4]
>>>
>>> a = [1, 2, 3, 4, 2, 3]
>>> a.sort(reverse=True)
>>> a
[4, 3, 3, 2, 2, 1]

# sorted()
>>> a = [1, 2, 3, 4, 2, 3]
>>> sorted(a)
[1, 2, 2, 3, 3, 4]
>>> a = [1, 2, 3, 4, 2, 3]
>>> sorted(a, reverse=True)
[4, 3, 3, 2, 2, 1]

遍历列表的索引和元素对

使用 enumerate() 函数可以同时输出索引和元素值。

>>> a = ['python', 'go', 'java']
>>> for i, v in enumerate(a):
...     print(i, v)

# output
0 python
1 go
2 java

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

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

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

需要说明的一点是,当列表中有两个元素出现的次数相同时,会返回第一个出现的元素。

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

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

前面的代码给出了出现最频繁的值。如果想要知道列表中所有元素的出现次数,那么可以使用 collections 模块。

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})

将两个列表合并为字典

使用 zip() 函数,可以将两个列表合并成字典。

>>> a = ['one', 'tow', 'three']
>>> b = [1, 2, 3]
>>> dict(zip(a, b))
{'one': 1, 'tow': 2, 'three': 3}

求两个列表的交集,并集和差集

# list_operate.py

def main():
    list_a = [1, 2, 3, 4, 5]
    list_b = [4, 5, 6, 7, 8]

    # 求交集的两种方式
    res_a = [i for i in list_a if i in list_b]
    res_b = list(set(list_a).intersection(set(list_b)))

    print(f"res_a is: {res_a}")
    print(f"res_b is: {res_b}")

    # 求并集
    res_c = list(set(list_a).union(set(list_b)))
    print(f"res_c is: {res_c}")

    # 求差集的两种方式,在B中但不在A中
    res_d = [i for i in list_b if i not in list_a]
    res_e = list(set(list_b).difference(set(list_a)))

    print(f"res_d is: {res_d}")
    print(f"res_e is: {res_e}")


if __name__ == '__main__':
    main()

字典创建

# 1、创建空字典
a = {}
b = dict()

# 2、有初始值,从输入的便利程度来说,我更喜欢第二种
a = {'a': 1, 'b': 2, 'c': 3}
b = dict(a=1, b=2, c=3)

# 3、key 来自一个列表,而 value 相同, 使用 fromkeys,那是相当的优雅
keys = ['a', 'b', 'c']
value = 100
d = dict.fromkeys(keys, value)

# 4、key 来自一个列表,而 value 也是一个列表,使用 zip
keys = ['a', 'b', 'c']
values = [1, 2, 3]
d = dict(zip(keys, values))

字典合并

m = {'a': 1}
n = {'b': 2, 'c': 3}

# 合并,两种方式
# 1、使用 update
m.update(n)
# 2、使用 **
{**m, **n}

判断 key 是否存在

在 Python2 中判断某个 key 是否存在,可以使用 has_key,但这个方法在 Python3 中已经被移除了。

另一种方法是使用 in 关键字,不仅兼容 Python2 和 Python3,速度还更快,强烈推荐。

d = {'a': 1, 'b': 2}
if 'a' in d:
    print('hello')    

获取字典中的值

d = {'a': 1, 'b': 2}

# 1、直接用 key 取值,但这种方式不好,如果 key 不存在会报错,推荐使用 get
a = d['a']

# 2、使用 get,如果 key 不存在还可以赋默认值
a = d.get('a')
c = d.get('c', 3)

字典遍历

d = {'a': 1, 'b': 2, 'c': 3}

# 遍历 key
for key in d.keys():
    pass

# 遍历 value
for value in d.values():
    pass

# 遍历 key 和 value
for key, value in d.items():
    pass

字典推导式

列表推导式和字典推导式是我相当喜欢的功能,简洁高效。mapfilter 我都已经快不会用了。

l = [1, 2, 3]
{n: n * n for n in l}
{1: 1, 2: 4, 3: 9}

字典按 key 或 value 排序

d = {'a': 1, 'b': 2, 'e': 9, 'c': 5, 'd': 7}

# 按 key 排序
sorted(d.items(), key=lambda t: t[0])
# 按 key 倒序
sorted(d.items(), key=lambda t: t[0], reverse=True)

# 按 value 排序
sorted(d.items(), key=lambda t: t[1])

还有一个需求是我在开发过程经常碰到的,就是有一个列表,列表的元素是字典,然后按字典的 value 对列表进行排序。

l = [{'name': 'a', 'count': 4}, {'name': 'b', 'count': 1}, {'name': 'd', 'count': 2}, {'name': 'c', 'count': 6}]
sorted(l, key=lambda e: e.__getitem__('count'))
# 倒序
sorted(l, key=lambda e: e.__getitem__('count'), reverse=True)

以上就是本文的全部内容,如果觉得还不错的话,欢迎点赞转发关注,感谢支持。


推荐阅读:

给公司了个人脸考勤系统!老大给了三千奖金。同事为啥记恨我? 前言 今天老大找到我,让我给一个人脸识别的考勤系统!说是很多同事都让别人拿着职员卡进行直接打卡!对公司对大家都造成了不好的印象!完给你发奖金!那我一看到奖金哪还想那么多,直接和老大说,明天就能正常使用了!没想到因为这件事同事都孤立我的感觉了! 1. 项目简介 本项目使用Python3.6编,Qt Designer(QT5)设计主界面,PyQt5库编控件的功能,使用开源 DeepFace人脸识别算法进行人脸识别,使用眨眼检测来实现活体识别,使用OpenCV3实现实时人脸识别。同时,将公司同事信息 阅读详情

相关推荐

【Elasticsearch专栏 16】深入探索:Elasticsearch的Master选举机制及其影响因素分析

Elasticsearch的Master选举机制是其分布式架构的基石,确保集群高可用性和数据一致性。通过多数派协议,节点间交换信息并投票选举Master,以维护集群状态和处理请求。该机制自动处理故障转移,保障服务连续性。

weixin_40736233的博客 1739

Python基础篇:Python 程序流程控制,让你的代码有理有据

和其它编程语言一样,按照执行流程划分,Python 程序也可分为 3 大结构,即顺序结构、选择(分支)结构和循环结构

五包辣条的博客 5544

康耐视visionpro-CogCreateSegmentAvgSegsTool操作工具详细说明

康耐视visionpro-CogCreateSegmentAvgSegsTool操作工具详细说明

视觉人机器视觉的博客 1428

Python高效编程解锁代码简洁性与性能提升的十大技巧

优先使用这些经过优化的工具而非手动实现循环,能显著提升代码性能和简洁性。使用concurrent.futures.ProcessPoolExecutor或多进程模块可以充分利用多核CPU,将任务并行化处理,显著缩短计算时间。避免使用+操作符频繁连接字符串,因为字符串是不可变对象,每次连接都会生成新对象。虽然Python是动态语言,但使用类型提示可以提高代码可读性,并允许静态分析工具(如mypy)在运行前发现潜在错误。这不仅使代码更简洁,还能提高代码的健壮性,特别是在文件操作、数据库连接等场景中。

ashow2015的博客 425

python除法函数代码_Python减少代码量的两个内置函数

咪哥杂谈本篇阅读时间约为 5 分钟。1前言Python中内置了几个非常好用的函数。当你掌握了这几个函数的用法后,有些场景下,不用自己去实现多余的冗余代码,只需要调用这些函数,便能很简短的帮你实现功能。今天来分享下两个函数的场景以及用法。PS:下例子截图演示均在 jupyter notebook 中完成。2enumerateenumerate,单词是枚举的意思。枚举是什么意思呢?来看下...

weixin_39609071的博客 369

让你的 Python 代码更优雅:10 个实用技巧,助你从“能跑”到“可维护”

如果你已经用 Python 编码有一段时间了,可能已经掌握了基础知识,也做过一些项目。现在你看着自己的代码,心里想着:“虽然能用,但……好像还不敢在代码评审时自信地展示。”我们都经历过这种阶段。但随着你不断编码,出整洁的代码就和出能用的代码一样重要。本文为你汇总了一些实用技巧,帮助你的代码从“能跑,别动它”进阶到“这代码值得维护”。

Xianxiancq的博客 1145

Python:简介,变量,字符串,运算符

Python是一种面向对象、解释型、弱类型的脚本语言,它也使一种功能强大而完善的通用性语言。相比其他编程语言(Java),Python代码非常简单,上手非常容易。比如我们想要完成某个功能,如果用Java需要100行代码,但用Python可能只需要20行代码,这是Python具有巨大吸引力的一大特点。

燕双嘤 991

Python 的 pytest 测试用例,一键测出同事代码 30 个 bug

内容涵盖 pytest 的优势、测试用例编的具体步骤、实用技巧以及实际案例等,帮助读者快速掌握用 pytest 进行代码测试的方法,提升团队代码质量和开发效率,让开发者轻松找出代码中的问题,避免 bug 流入生产环境。与其他测试框架相比,pytest 的测试用例编更加简单,不需要复杂的类结构,开发者可以用函数的形式轻松编测试用例,降低了学习和使用的门槛。首先,小张对小李的代码进行了深入分析,了解了代码的主要功能是处理用户信息的管理,包括用户的添加、查询、修改和删除等操作。最后,强大的断言机制。

2503_92604243的博客 951

Python学习教程之恶作剧之吻:如何出让同事无法维护的代码?(别打我)

对,你没看错,本文就是教你怎么出让同事无法维护的代码。(看完别打我) 一、程序命名 容易输入的变量名。比如:Fred,asdf 单字母的变量名。比如:a,b,c, x,y,z(如果不够用,可以考虑a1,a2,a3,a4,….) 有创意地拼错误。比如:SetPintleOpening, SetPintalClosing。这样可以让人很难搜索代码。 抽象。比如:ProcessData, DoIt...

chen801090的博客 369

明知同事代码出现错误,却不提醒,1个月后真可怕

对于很多的职场员工来说,即使彼此之间的关系并不是非常好,但在很多不影响自身利益的情况下,都会选择互帮互助的 最近,有一位读者在职场论坛发了这样一个帖子“明知道同事代码错误却不提醒他,1个月后我获得加薪 网友:高手”到底是什么情况呢? 提到程序员,相信很多人都会想到工资高,但同时很多人也会想到另一个比较有趣的话题:程序员在工作中非常容易出现BUG。 对于普通行业的人来说,平时的工作中是极少会用到大量...

java、python攻城狮 570

女神相册密码忘记了,我只用Python了20行代码

​目录 一、事情是这样的 二、首先回顾一下女神的操作流程 三、需要密码打开相册 四、python脚本化处理 1、基本思路 2、解压命令 3、解压命令参数分析 4、整理7z解压命令 5、关门!上python脚本 五、找女神去... 一、事情是这样的 今早上班,公司女神小姐姐说,她去年去三亚旅游的照片打不开了 好奇问了一下才知道。 原来是,她把照片压缩了,而且还加了密码。 但是密码不记得了,只记得是一串6位数字。 话说照片压缩率也不高,而且还加密,难道是有什么可爱的小照片 .

请大家直接把问题写在评论区或留言,不要只说一句"你好 或 在吗",我会尽快回复的。 4万+

Python恶作剧之吻:如何出让同事无法维护的代码?(别打我)

对,你没看错,本文就是教你怎么出让同事无法维护的代码。(看完别打我)一、程序命名容易输入的变量名。比如:Fred,asdf单字母的变量名。比如:a,b,c, x,y,z(如果不够用,可以考虑a1,a2,a3,a4,….)有创意地拼错误。比如:SetPintleOpening, SetPintalClosing。这样可以让人很难搜索代码。抽象。比如:ProcessData, DoIt, GetD...

weixin_30828379的博客 180

Python高效编程十个让代码既简洁又强大的实用技巧

例如,我们需要生成0到9所有偶数的平方列表,传统方法需要先创建空列表,然后循环判断并追加元素。通过标注变量、参数和返回值的类型,IDE可以提供更好的自动补全和错误检查,静态类型检查工具如mypy可以在运行前发现潜在错误。虽然列表推导式现在更常用,但lambda在需要函数参数的场景下仍有价值,如sorted()的key参数或GUI编程中的回调函数。例如,(xx for x in range(1000000)) 创建一个生成器对象,仅在迭代时计算下一个值,极大减少内存占用。chain()连接多个迭代器;

lixiangwei1989的博客 569

python对齐方式】

python对齐方法

m0_73419365的博客 3980

python开发全过程_python开发【一】python介绍

本章内容:python 介绍python 入门知识(流程控制)练习题一、python介绍python的创始人为吉多·范罗苏姆(“龟叔”)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承,龟叔给Python的定位是“优雅”、“明确”、“简单”。python现在有2个大版本:python2和python3。最新的TIOBE排行榜,...

weixin_33236271的博客 3097

Python的print输出中文对齐问题

Python的print函数输出中文字符串对齐问题的解决方案。

Sunny 3万+

python输出汉字怎么对齐_python如何实现format对齐输出?

在计算机编程中,会遇到这样的问题,如果输入的文字符宽度不够时,计算机会自动的采用西文字符填充。由于中西文字符占用宽度不同,所有即使相同的宽度,原本居中对齐的内容会出现偏差,出现出不是我们想要的的样式。那么如何使我们输入的文本在输出我们想要的对齐方式呢?其实用我们的format就可以解决,我们一起来看看如何操作吧。方法一::{}右对齐对齐符号后面的{}表示变量的总宽度print("{:yifu...

weixin_39927683的博客 1547

Python代码整洁之道

在软件开发中,代码的整洁性对于项目的长期成功至关重要。整洁的代码不仅易于阅读和理解,还更易于维护和扩展。Python以其简洁、易读和强大的功能而著称,但即使是Python代码,如果不加以注意,也可能变得混乱不堪。以下是一些建议,帮助你提高Python代码的整洁性。

努力让自己发光,对的人才能迎着光而来 7万+

消防给水及消火栓系统技术规范图示15S909.pdf

消防给水及消火栓系统技术规范图示15S909.pdf

上一篇: Python 递归函数返回值为 None 的解决办法
下一篇: Python 的排序方法 sort 和 sorted 的区别
赛博Cookie
博客等级 码龄15年 5156粉丝 165原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值