继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

25个有趣实用的Python单行代码

pythontip
关注TA
已关注
手记 5
粉丝 0
获赞 0

一行代码搞定的事情,为啥要两行!

在用Python的第一天,便对它的简单性、流行性及其著名的单行代码着迷。

下面分享25个有趣且实用的Python单行代码,欢迎大家点赞、收藏,支持!

1. 交换两个变量

a = 4  
b = 5 a,b = b,a ## 👍  
print(a,b)  
#结果:5 4  

2. 多变量赋值

a,b,c = 4,5.5,'Hello' ## 👍  
print(a,b,c) #结果: 4 5.5 hello  

增加一点点难度:

a,b,*c = [1,2,3,4,5]  ## 👍👍  
print(a,b,c) #结果: 1 2 [3,4,5]  

3. 列表偶数求和

a = [1,2,3,4,5,6] s = sum([num for num in a if num%2 == 0]) ## 👍👍👍  
print(s) #结果: 12  

4. 列表删除多元素

del 是 Python 中用于从列表中删除值的关键字。

a = [1,2,3,4,5] del a[1::2] ## 👍👍👍  
print(a) #结果:[1, 3, 5]  

此处需要理解L[start:end:step]:

  • start为开始位置,省略时为0
  • end为结束位置,省略时为列表长度;
  • step步长,省略时为1,如果有负号- 表示按列表自右到左的方向迭代。

5. 读取文件

最常用的方式

with open("data.txt") as f: ## 👍👍  
 lst=[line.strip() for line in f] print(lst)  

更简单、更短的方法

lst = list(open('data.txt')) ## 👍👍👍  
print(lst)  

也可以

lst = [line.strip() for line in open('data.txt')] ## 👍👍  
print(lst)  

6. 将数据写入文件

with open("data.txt",'a') as f:  
 f.write("Python is awsome")```   
  
  
## 7. 创建列表  
  
`range()`函数可以用于生成一系列整数:  
```python  
lst = [i for i in range(0,10)] ## 👍  
print(lst) ```   
  
单行列表推导,快速创建:  
```python  
lst = [("Hello "+i) for i in ['Karl','Abhay','Zen']] ## 👍👍👍  
print(lst) ```   
  
## 8. 映射列表   
有时需要改变一个列表中所有元素的数据类型。比较直观的想法是使用**循环**:先访问列表中的所有元素,然后逐个更改元素的数据类型。这种方法中规中矩,但巧用 `map`一一映射,耳目一新。  
```python  
list(map(int,['1','2','3'])) ## 👍👍👍  
list(map(float,[1,2,3])) ## 👍👍👍  
[float(i) for i in [1,2,3]] ## 👍👍  

9. 快速创建集合

我们可用创建列表的方法快速创建集合:

#### 范围内所有偶数的平方  
s = {x**2 for x in range(10) if x%2==0} ## 👍👍👍  
print(s) #结果:{0, 4, 16, 36, 64}  

10. FizzBuzz单行代码

有这样一个问题,需要编写一个程序来打印从 1100 的数字。其中对于3的倍数,打印Fizz,对于 5 的倍数,打印Buzz

显而易见,可以使用循环和多个if-else 语句来实现。

如果使用java语言来完成,估计至少10行代码,但使用python,一行搞定!!!。

['FizzBu​​zz' if i%3==0 and i%5==0 else 'Fizz' if i%3==0 else 'Buzz' if i%5==0 else i for i in range(1,20 )] ## 👍👍👍👍  

在上面的代码中,使用列表推导来运行一个从120 的循环,然后在循环的每次迭代中,检查数字:

  • 如果能同时被 35 整除,则用 FizzBu​​zz 替换;
  • 如果只能被 3 整除,我们用 Fizz 替换;
  • 如果只能被 5 整除,则用 Buzz 替换;
  • 否则仍然为原来的数字。

11. 回文数

回文是反转后看起来相同的数字或字符串。

text = 'level'  
ispalindrome = text == text[::-1] ## 👍👍👍  
print(ispalindrome) ## True  

12. 空格分隔整数到列表

input_string = '1 2 3 4 5'  
lis = list(map(int,input_string.split())) ## 👍👍👍  
print(lis) ## [1, 2, 3, 4, 5]  

13. Lambda 函数

lambda函数是匿名函数。一个 lambda 函数可以接受任意数量的参数,但只能是一个表达式。

下面是一个简单的lambda 函数,它接受一个数字,并返回数字的平方:

sqr = lambda x: x * x   ## 👍👍👍  
sqr(10) ## 100  

14. 检查元素是否在列表中

num = 5  
res = 'present' if num in [1,2,3,4,5] else 'not present' ## 👍👍👍  
print(res) ## present  

15. 打印图案

用符号打印有趣的图案总是让我着迷。在python中,只需一行代码就可以绘制出惊人的图案:

n = 5 print('\n'.join('😀' * i for i in range(1, n + 1))) ## 👍👍👍  

输出为:

😀  
😀😀 😀😀😀 😀😀😀😀 😀😀😀😀😀  

16. 计算阶乘

import math n = 6  
print(math.factorial(n)) ## 720  

17. 斐波那契数列

斐波那契数列,其中每个数字都是前面两个数字的总和。例如:最简单的斐波那契数列: 1, 1, 2, 3, 5, 8, 13
我们可以使用列表推导创建一个范围内的斐波那契数列。

fibo = [0,1] [fibo.append(fibo[-1]+fibo[-2]) for i in range(5)] ## 👍👍👍👍  
print(fibo) ## [0, 1, 1, 2, 3, 5, 8]  

18. 生成素数

素数是一个只能被它自己和 1 整除的数。例如: 2,3,5,7。为了在一个范围内生成素数,可以使用带有过滤器filterlambda 的列表函数来生成素数。

prime = list(filter(lambda x:all(x % y != 0 for y in range(2, x)), range(2, 13))) ## 👍👍👍👍👍  
print(prime) ## [2, 3, 5, 7, 11, 13]  

19. 最大数

findmax = lambda x,y: x if x > y else y ## 👍👍  
findmax(5,14) ## 14  

20. 线性变换

有时需要将列表的元素缩放到 2倍或5倍。函数法实现:

def scale(lst, x):  
 return [i*x for i in lst] ## 👍👍scale([2,3,4], 2) ## [4, 6, 8]  

21. 矩阵的转置

需要将所有行更改为列,反之亦然。在python中,可以使用zip函数在一行代码中转置矩阵。当然在numpy中,可以直接使用transpose函数。

a=[[1,2,3],     
   [4,5,6],     
[7,8,9]] transpose = [list(i) for i in zip(*a)] ##👍👍  
print(transpose) ## [[1, 4, 7], [2, 5, 8], [3, 6, 9]]  

22. 正则表达式–模式匹配

当需要知道文本中某个模式出现的次数时,在 python 中,有re库可以完成这些工作。

import re  
res = re.findall('python','python is a programming language. python is python.')) ##👍👍👍👍  
print(res) ## ['python', 'python', 'python']  

当然re库不仅仅上面这么简单。re是一个非常有用的库,帮助我们更好地处理文本。

23. 文本替换

s = "python is a programming language.python is python"  
s = s.replace("python",'Java') ##👍  
print(s) ## "Java is a programming language.Java is Java"  

24. 模拟抛硬币

当需要从给定的集合中中些随机进行选择,random.choice非常有用:

import random;  
res = random.choice(['Head',"Tail"]) ##👍👍👍👍  
print(res) ## Head or Tail  

25. 生成组合元组

groups = [(a, b) for a in ['a', 'b'] for b in [1, 2, 3]] ##👍👍👍👍  
print(groups) ## [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3)]  

小节

以上就是我们分享的25个有趣且实用的pyhton单行代码,希望充实你武器库!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP