当前位置:首页>python>Python一行代码能干啥?看到第5个我裂开了

Python一行代码能干啥?看到第5个我裂开了

  • 2026-09-02 19:27:53
Python一行代码能干啥?看到第5个我裂开了

Python一行代码能干啥?看到第5个我裂开了

前几天刷到一段代码,整个人都不好了。

就一行。

干了我之前写了20多行才搞定的事。

那一刻我意识到:不是我不会写Python,是我写得还不够骚。

今天分享一些「一行代码流」的操作,建议先收藏,别问我怎么知道的。


unsetunset1. 一行代码输出爱心unsetunset

程序员表白必备。

print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0else' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))

运行效果自己试,我不说你也知道是个爱心形状。

懂的都懂。


unsetunset2. 一行代码九九乘法表unsetunset

以前写这个要两层循环,现在一行搞定:

print('\n'.join([' '.join([f"{i}x{j}={i*j}"for j in range(1,i+1)]) for i in range(1,10)]))

输出:

1x1=11x2=2 2x2=41x3=3 2x3=6 3x3=9...

面试要是被问到乘法表,甩出这一行,面试官看你的眼神都不一样。


unsetunset3. 一行代码统计词频unsetunset

以前用字典一个一个加,现在:

from collections import Counter; print(Counter("hello world hello python hello code".split()))

输出:

Counter({'hello': 3, 'world': 1, 'python': 1, 'code': 1})

Counter 是个好东西,值得深入了解。


unsetunset4. 一行代码找出最长单词unsetunset

print(max("the quick brown fox jumps over lazy dog".split(), key=len))

输出:jumps

原理是 max() 的 key 参数,可以自定义比较规则。

类似的还可以找最短单词、最大数字等。


unsetunset5. 一行代码反转字符串unsetunset

这个真的简单到离谱:

print("Python"[::-1])

输出:nohtyP

[::-1] 是切片语法,从头到尾,步长为 -1,正好反转。

以后面试被问字符串反转,别再傻傻写循环了。


unsetunset6. 一行代码判断素数unsetunset

n = 17print(all(n % i for i in range(2, int(n**0.5)+1)))

输出:True(17是素数)

用 all() 配合生成器表达式,优雅。


unsetunset7. 一行代码展开嵌套列表unsetunset

把 [[1,2],[3,4],[5]] 变成 [1,2,3,4,5]:

print([x for sub in [[1,2],[3,4],[5]] for x in sub])

双重列表推导式,乍看有点晕,多看几遍就顺了。


unsetunset8. 一行代码读取文件所有内容unsetunset

print(open("test.txt").read())

这行代码有个小问题:文件没关。

更骚的写法:

print(open("test.txt").readlines())

一行一行读,返回列表。

当然,正经项目还是建议用 with open(),别说是我教的。


unsetunset9. 一行代码生成随机密码unsetunset

import random; print(''.join(random.choices('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', k=16)))

生成16位随机密码,字母数字混搭。

改 k 的值就能调整长度。


unsetunset10. 一行代码实现快速排序unsetunset

这个真的绝了:

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

测试:

print(qsort([3, 1, 4, 1, 5, 9, 2, 6]))# 输出: [1, 1, 2, 3, 4, 5, 6, 9]

一个 lambda 递归搞定快速排序,Python 的表达能力是真的强。


unsetunset11. 一行代码打印斐波那契数列unsetunset

fib = lambda n: n if n <= 1else fib(n-1) + fib(n-2); print([fib(i) for i in range(10)])

输出前10个斐波那契数:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

unsetunset12. 一行代码找出一组数的最大值、最小值、和unsetunset

nums = [3, 1, 4, 1, 5, 9, 2, 6]print((max(nums), min(nums), sum(nums)))

输出:(9, 1, 31)

这行不算骚,但确实好用。


unsetunset13. 一行代码把矩阵转置unsetunset

把 [[1,2,3],[4,5,6]] 变成 [[1,4],[2,5],[3,6]]:

print(list(zip(*[[1,2,3],[4,5,6]])))

* 解包,zip 重新打包,矩阵转置轻松搞定。


unsetunset14. 一行代码检查列表是否全部唯一unsetunset

print(len(set([1, 2, 3, 4])) == len([1, 2, 3, 4]))# True,没有重复print(len(set([1, 2, 2, 3])) == len([1, 2, 2, 3]))# False,有重复

用集合去重,再比较长度,一目了然。


unsetunset15. 一行代码合并两个字典unsetunset

a = {'x': 1, 'y': 2}b = {'y': 3, 'z': 4}print({**a, **b})

输出:{'x': 1, 'y': 3, 'z': 4}

Python 3.5+ 的语法,** 解包字典。

注意:如果 key 重复,后面的会覆盖前面的。


unsetunset⚠️ 说在最后unsetunset

这些一行代码确实爽,也确实骚。

但是——

千万别在生产环境这么写。

原因很简单:

  1. 可读性差——别人看不懂,甚至你自己一周后也看不懂
  2. 维护困难——出问题不好调试
  3. 性能不一定好——有些写法只是“短”,并不“快”

代码首先是给人看的,其次才是给机器运行的。

骚操作适合:

  • 刷题时炫技
  • 面试时展示功底
  • 朋友圈装杯(划掉)
  • 偶尔在个人项目里过过瘾

不适合:

  • 团队协作项目
  • 需要长期维护的代码
  • 有新人参与学习的代码库

最后问一句:

你用过最骚的一行代码是什么?

评论区见。


如果觉得有用,点个「在看」,让更多人看看 Python 的骚操作 ✨

最新文章

随机文章