当前位置: 首页 > news >正文

【第76期】50条有趣的Python一行代码,建议收藏!

11ef93ff05dc1dbe89f1a6c6c9995ef4.gif

1a3d49294bbb1f1664351d7b67e05e0a.png

在学习Python的过程中,总会发现Python能够轻易的解决许多问题。

一些复杂的任务,甚至可以使用一行Python代码就能搞定。

下面,小F给大家介绍50个有趣的Python一行代码,都很实用。

希望大家能从中找到对自己有帮助的技巧。

▍1、字母异位词

两个单词如果包含相同的字母,次序不同,则称为字母易位词(anagram)。

例如,“silent”和“listen”是字母易位词,而“apple”和“aplee”不是易位词。

from collections import Counter

s1 = 'below'
s2 = 'elbow'

print('anagram') if Counter(s1) == Counter(s2) else print('not an anagram')

使用一行Python代码,就能判断出来了。

▍2、二进制转十进制

decimal = int('1010', 2)
print(decimal) #10

▍3、将字符串转换为小写

print("Hi my name is XiaoF".lower())
# 'hi my name is xiaof'

print("Hi my name is XiaoF".casefold())
# 'hi my name is xiaof'

▍4、将字符串转换为大写

print("hi my name is XiaoF".upper())
# 'HI MY NAME IS XIAOF'

▍5、将字符串转换为字节

print("convert string to bytes using encode method".encode())
# b'convert string to bytes using encode method'

▍6、拷贝文件

import shutil

shutil.copyfile('source.txt', 'dest.txt')

▍7、快速排序

qsort = lambda l: l if len(l) <= 1 else qsort([x for x in l[1:] if x < l[0]]) + [l[0]] + qsort([x for x in l[1:] if x >= l[0]])

print(qsort([17, 29, 11, 97, 103, 5]))
# [5, 11, 17, 29, 97, 103]

▍8、n个连续数的和

n = 10

print(sum(range(0, n+1)))
# 55

▍9、交换两个变量的值

a,b = b,a

▍10、斐波纳契数列

fib = lambda x: x if x<=1 else fib(x-1) + fib(x-2)

print(fib(20))
# 6765

▍11、将嵌套列表合并为一个列表

main_list = [[0, 1, 2], [11, 12, 13], [52, 53, 54]]

result = [item for sublist in main_list for item in sublist]
print(result)

>
[0, 1, 2, 11, 12, 13, 52, 53, 54]

▍12、运行一个HTTP服务器

python3 -m http.server 8000
python2 -m SimpleHTTPServer

▍13、反转列表

numbers = [0, 1, 2, 11, 12, 13, 52, 53, 54]

print(numbers[::-1])
# [54, 53, 52, 13, 12, 11, 2, 1, 0]

▍14、阶乘

import math

fact_5 = math.factorial(5)
print(fact_5)
# 120

▍15、在列表推导式中使用for和if

even_list = [number for number in [1, 2, 3, 4] if number % 2 == 0]

print(even_list)
# [2, 4]

▍16、列表中最长的字符串

words = ['This', 'is', 'a', 'list', 'of', 'words']

result = max(words, key=len)
print(result)
# 'words'

▍17、列表推导式

li = [num for num in range(0, 10)]

print(li)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

▍18、集合推导式

num_set = {num for num in range(0, 10)}

print(num_set)
# {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

▍19、字典推导式

dict_numbers = {x: x*x for x in range(1, 5)}

print(dict_numbers)
# {1: 1, 2: 4, 3: 9, 4: 16}

▍20、if-else

print("even") if 4 % 2==0 else print("odd")

▍21、无限循环

while 1:0

▍22、检查数据类型

print(isinstance(2, int))
# True

print(isinstance("allwin", str))
# True

print(isinstance([3, 4, 1997], list))
# True

▍23、While循环

a = 5

while a > 0:
    a = a - 1

print(a)
# 0

▍24、使用print语句写入文件

print("Hello, World!", file=open('file.txt', 'w'))

既可打印出信息,还能将信息保存文件。

▍25、计算一个字符在字符串中出现的频率

print("umbrella".count('l'))
# 2

▍26、合并列表

list1 = [1, 2, 4]
list2 = ['XiaoF']
list1.extend(list2)

print(list1)
# [1, 2, 4, 'XiaoF']

▍27、合并字典

dict1 = {'name': 'weiwei', 'age': 23}
dict2 = {'city': 'Beijing'}
dict1.update(dict2)

print(dict1)
# {'name': 'weiwei', 'age': 23, 'city': 'Beijing'}

▍28、合并集合

set1 = {0, 1, 2}
set2 = {11, 12, 13}
set1.update(set2)

print(set1)
# {0, 1, 2, 11, 12, 13}

▍29、时间戳

import time

print(time.time())

▍30、列表中出现次数最多的元素

test_list = [9, 4, 5, 4, 4, 5, 9, 5, 4]
most_frequent_element = max(set(test_list), key=test_list.count)

print(most_frequent_element)
# 4

▍31、嵌套列表

numbers = [[num] for num in range(10)]

print(numbers)
# [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]]

▍32、八进制转十进制

print(int('30', 8)) 
# 24

▍33、将键值对转换为字典

result = dict(name='XiaoF', age=23)

print(result)
# {'name': 'XiaoF', 'age': 23}

▍34、求商和余数

quotient, remainder = divmod(4, 5)

print(quotient, remainder)
# 0 4

divmod()函数返回当参数1除以参数2时,包含商和余数的元组。

▍35、删除列表中的重复项

print(list(set([4, 4, 5, 5, 6])))
# [4, 5, 6]

▍36、按升序排序列表

print(sorted([5, 2, 9, 1]))
# [1, 2, 5, 9]

▍37、按降序排序列表

print(sorted([5, 2, 9, 1], reverse=True))
# [9, 5, 2, 1]

▍38、获取小写字母表

import string

print(string.ascii_lowercase)
# abcdefghijklmnopqrstuvwxyz

▍39、获取大写字母表

import string

print(string.ascii_uppercase)
# ABCDEFGHIJKLMNOPQRSTUVWXYZ

▍40、获取0到9字符串

import string

print(string.digits)
# 0123456789

▍41、十六进制转十进制

print(int('da9', 16))
# 3497

▍42、日期时间

import time

print(time.ctime())
# Thu Aug 13 20:00:00 2021

▍43、将列表中的字符串转换为整数

print(list(map(int, ['1', '2', '3'])))
# [1, 2, 3]

▍44、用键对字典进行排序

d = {'one': 1, 'four': 4, 'eight': 8}
result = {key: d[key] for key in sorted(d.keys())}

print(result)
# {'eight': 8, 'four': 4, 'one': 1}

▍45、用键值对字典进行排序

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
result = {k: v for k, v in sorted(x.items(), key=lambda item: item[1])}

print(result)
# {0: 0, 2: 1, 1: 2, 4: 3, 3: 4}

▍46、列表旋转

li = [1, 2, 3, 4, 5]

# li[n:] + li[:n], 右变左
print(li[2:] + li[:2])
# [3, 4, 5, 1, 2]

# li[-n:] + li[:-n], 左变右
print(li[-1:] + li[:-1])
# [5, 1, 2, 3, 4]

▍47、将字符串中的数字移除

message = ''.join(list(filter(lambda x: x.isalpha(), 'abc123def4fg56vcg2')))

print(message)
# abcdeffgvcg

▍48、矩阵变换

old_list = [[1, 2, 3], [3, 4, 6], [5, 6, 7]]
result = list(list(x) for x in zip(*old_list))

print(result)
# [[1, 3, 5], [2, 4, 6], [3, 6, 7]]

▍49、列表过滤

result = list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6]))

print(result)
# [2, 4, 6]

▍50、解包

a, *b, c = [1, 2, 3, 4, 5]

print(a) # 1
print(b) # [2, 3, 4]
print(c) # 5

3f06068c1e3be7ded3f7595c868f985b.png

本期赠书给大家介绍几本Python相关的图书,人生苦短,快学Python!

4a2ce7657486087d940599723b3f7f6b.png

01

《Effective Python:编写高质量Python代码的90个有效方法(原书第2版)》 

babc2c907b8a27d92d35c87bbe22a963.png

谷歌资深工程师撰写的经典Python编程进阶图书全新升级!第2版基于Python 3.8,新增30%内容!掌握Pythonic编程方式编写程序。本书以使用场景为主导的精练教学方式,汇聚了90条优秀的实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。通过本书,你能够了解到解决关键编程任务所用的最佳方式,并学会编写易于理解、便于维护且利于改进的代码。适合有Python基础的人阅读。

0aa0ebfbddab3e7a0be652802611bee7.png

02

《Python 3标准库》

d9352813c15cd43ad867eed72a9da21a.png

标准库与语言本身同样重要,它好比一个百宝箱,能为各种常见的任务提供完美的解决方案,所以本书是所有Python程序员都必备的工具书!全书以案例驱动的方式讲解了标准库中数百个模块的使用方法和工作原理,简洁易懂,为Python程序员熟练掌握和使用这些模块提供了绝佳指导。

8a6a1e987934b5f9564a543f0dff5f8e.png

03

《Python代码整洁之道:编写优雅的代码》

16fd509147892387b0b00cc19da5cd06.png

本书提供了构建无错误和强壮的Python项目所需的技巧和技术。阅读本书之后,你将会熟练地编写整洁的Python代码,并可以成功地将这些原则应用到自己的Python项目中。


643bb1fcb54882a58d9e5bd886c0c9c2.png

04

《Python进阶编程:编写更高效、优雅的Python代码》

b51d7cd749e508b6a4385234e1f02c1c.png

蟒蛇书进阶版,基于Python3.8,Python编程进阶,陈斌、史海峰、李道兵等15位专家力荐,结合源码讲解语法和高级知识,给出编码风格建议

fdfdabb07facd33fe521083df687e6c9.png

05

《Python学习手册(原书第5版)》

7ccdbe82bce0174c0b010f694ac6d393.png

无论你是零基础新手,还是有编程基础的程序员,想快速入门Python并达到可以开发实际项目的水平,本书都会是你的理想选择。每章都对Python语言的关键内容做单独讲解,并且配有章后习题、编程练习及详尽的解答,还配有大量注释的示例以及图表,便于你学习新的技能并巩固加深自己的理解。

赠书规则

送书规则:感谢大家对华章图书的信任与支持。在留言区围绕Python谈谈你的想法。华章妹会在留言池随机捞2条锦鲤,分别包邮送出本推文中的1本正版书籍。

截止日期:10月15日下午17:00

特别注意

1、请按规则结合自身工作与学习的经历留言请规避百度式名词解释式言论,走心留言优先。

2、阅读最多、分享最多者优先。参与活跃者优先。同一人每月最多获赠一本书。

特别说明:本活动无任何内幕,最终解释权归华章公司所有。

5a6d391793779dfeada2b890f9099162.gif

b20836585895578a363847a4346d2432.png

扫码关注【华章计算机】视频号

每天来听华章哥讲书

4a0ca770d1f3c590f4aad29bd6a9fa51.gif

更多精彩回顾

书讯 | 10月书讯(下) |  小长假我读这些新书

书讯 | 10月书讯(上) |  小长假我读这些新书

资讯 | 什么是图数据库?图数据库实践与创新浅析

书单 | 你们要的Java学习路线图来了

干货 | 数字化转型的1个目标,3大领域,6大因素和9个环节

收藏 | 两本书助你构建智能计算系统知识树

上新 | 【新书速递】从技术小白到开发大牛,这本实验教程带你手把手全栈开发!

赠书 | 【第75期】《失控玩家》引发的思考:我们究竟离真正的人工智能有多远?

5362ab1b8eb9f179a41c55f4dadff859.gif

相关文章:

  • 关于微服务系统中数据一致性的总结
  • 手把手教你做用户画像:3种标签类型、8大系统模块
  • 【新书速递】流量运营教科书
  • 纪念 C语言之父 丹尼斯·里奇 逝世10周年:他发明了计算机世界的钢筋水泥!...
  • 索引为什么能提高查询性能....
  • 五位卷王 | 总结的十道 JVM 面试真题!(建议收藏)
  • 【新书速递】图解IT-用Python轻松设计控制系统
  • Java、Go、Rust大比拼,高并发时代谁能称雄?
  • 32岁清华女教授获2021达摩院青橙奖,曾研制世界首台咽拭子采样机器人
  • 【新书速递】程序员必会的40种算法
  • 终于有人把流量运营讲明白了
  • 复杂的世界 简单的规律 —— 2021年诺贝尔物理奖科学背景介绍及解读
  • 【新书速递】分布式事务开山之作,带你深入理解分布式事务
  • 该囤书默默啃起来了,然后惊艳所有人
  • 游戏服务器为什么选用Actor模型,《百万在线》给你答案
  • 【RocksDB】TransactionDB源码分析
  • jquery cookie
  • k个最大的数及变种小结
  • vue中实现单选
  • 浏览器缓存机制分析
  • 每天10道Java面试题,跟我走,offer有!
  • 数据可视化之 Sankey 桑基图的实现
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 小程序 setData 学问多
  • 用 Swift 编写面向协议的视图
  • 再谈express与koa的对比
  • Hibernate主键生成策略及选择
  • 从如何停掉 Promise 链说起
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​决定德拉瓦州地区版图的关键历史事件
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (39)STM32——FLASH闪存
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (HAL库版)freeRTOS移植STMF103
  • (笔试题)分解质因式
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (利用IDEA+Maven)定制属于自己的jar包
  • (四) 虚拟摄像头vivi体验
  • (转) 深度模型优化性能 调参
  • (转)JAVA中的堆栈
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .net 反编译_.net反编译的相关问题
  • .NET构架之我见
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .pop ----remove 删除
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [ Linux ] Linux信号概述 信号的产生
  • [ 转载 ] SharePoint 资料
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法