Python之一行代码的终极“姿势”(干货!)

Python的简洁之美,一行代码也能玩出姿势的花样~~~~~

1.一行代码交换参数a, b的值

a, b = b, a

2.一行代码反转list(列表)

[v1,v2,v3][::-1]
#输出结果为:[v3,v2,v1]

3.一行代码list(列表)去重(元素)

set([1,2,2,3,3,3,4])
#输出结果为:{1, 2, 3, 4}

4.一行代码求list(列表)中的最大值

max(max([[1,2,3], [6,2], [4]], key=lambda v: max(v)))
#输出结果为:6

5.一行代码合并两个字典

 {**{'Name':'Tom', 'Age':'16', 'Sex':'male'}, **{'ID':'001', 'School':'yale'}}
 #输出结果为:{'Name': 'Tom', 'Age': '16', 'Sex': 'male', 'ID': '001', 'School': 'yale'}

6.一行代码生成顺序序列

list(range(10))
#输出结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

7.一行代码生成逆序序列

list(range(10,-1,-1))
#输出结果为:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

8.一行代码生成九九乘法表

print ('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))
#输出结果为:
1*1=1 
1*2=2  2*2=4 
1*3=3  2*3=6  3*3=9 
1*4=4  2*4=8  3*4=12 4*4=16
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

9.一行代码实现 a 到 b 的和 (a 与 b 均为int变量)

#示例求1——100的和
print(sum(range(1, 101)))
#输出结果为:5050

10.一行代码实现求解2的1000次方的各位数之和

print(sum(map(int, str(2**1000))))
#输出结果为:1366

11.一行代码实现心形输出

print('\n'.join([''.join([(u'Love全 洛Love'[(x-y)%11]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))
#输出结果:
                LoveLove全            洛LoveLov               
            全 洛LoveLove全 洛Lov   ve全 洛LoveLove全 洛L           
          e全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛Love         
         e全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛LoveLo        
        e全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛LoveLove       
        全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛LoveLove全       
         洛LoveLove全 洛LoveLove全 洛LoveLove全 洛LoveLove全        
        洛LoveLove全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛       
        LoveLove全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛L       
        oveLove全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛Lo       
         eLove全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛Lo        
          ove全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛Lo         
          ve全 洛LoveLove全 洛LoveLove全 洛LoveLove全 洛Lov         
             洛LoveLove全 洛LoveLove全 洛LoveLove全 洛Lo           
             LoveLove全 洛LoveLove全 洛LoveLove全 洛Lo            
              veLove全 洛LoveLove全 洛LoveLove全 洛Lo             
                ove全 洛LoveLove全 洛LoveLove全 洛L               
                  全 洛LoveLove全 洛LoveLove全 洛                 
                    LoveLove全 洛LoveLove全                    
                       Love全 洛LoveLove                      
                          全 洛LoveLo                         
                             ove                            
                              e   

12.一行代码输出斐波那契数列

print([x[0] for x in [(a[i][0], a.append([a[i][1], a[i][0]+a[i][1]])) for a in ([[1, 1]], ) for i in range(30)]])
#输出结果为:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040]

13.一行代码实现快速排序

quick_sort = lambda arr: arr if len(array) <= 1 else quick_sort([item for item in arr[1:] if item <= arr[0]]) + [arr[0]] + quick_sort([item for item in arr[1:] if item > arr[0]]) or arr

14.一行代码解决八皇后问题

[__import__('sys').stdout.write('\n'.join('.' * i + 'Q' + '.' * (8-i-1) for i in vec) + "\n========\n") for vec in __import__('itertools').permutations(range(8)) if 8 == len(set(vec[i]+i for i in range(8))) == len(set(vec[i]-i for i in range(8)))]
#输出结果(展示部分):
Q.......
....Q...
.......Q
.....Q..
..Q.....
......Q.
.Q......
...Q....

15.一行代码将十进制转换为(二、八、十六)进制 and 十转ASCll码 and ASCll码转十

#十转二
bin(10)
#输出结果为:0b1010

#十转八
oct(10)
#输出结果:0o12

#十转十六
hex(10)
#输出结果为:0xa

#十转ASCll
chr(65)
#输出结果为:A

#ASCll转十
ord('A')
#输出结果为:65

16.一行代码启动一个Web服务

python -m http.server 8080

17.一行代码输出Mandelbrot图像

print('\n'.join([''.join(['*'if abs((lambda a: lambda z, c, n: a(a, z, c, n))(lambda s, z, c, n: z if n == 0 else s(s, z*z+c, c, n-1))(0, 0.02*x+0.05j*y, 40)) < 2 else ' ' for x in range(-80, 20)]) for y in range(-20, 20)]))
#输出结果:
                                                                                *                   
                                                                                                    
                                                                                                    
                                                                          **                        
                                                                     ***********                    
                                                                    ************                    
                                                                      *********                     
                                                            *    * ************  * *                
                                                    ****** * *************************** *          
                                                    *************************************** *****   
                                                     *******************************************    
                                               *** ******************************************** *   
                                                **************************************************  
                                             *******************************************************
                      *        *              ***************************************************** 
                     **** ******* *          *******************************************************
                      *****************     ******************************************************* 
                   *********************** *********************************************************
                   *********************** ******************************************************** 
             **** ********************************************************************************  
*********************************************************************************************       
             **** ********************************************************************************  
                   *********************** ******************************************************** 
                   *********************** *********************************************************
                      *****************     ******************************************************* 
                     **** ******* *          *******************************************************
                      *        *              ***************************************************** 
                                             *******************************************************
                                                **************************************************  
                                               *** ******************************************** *   
                                                     *******************************************    
                                                    *************************************** *****   
                                                    ****** * *************************** *          
                                                            *    * ************  * *                
                                                                      *********                     
                                                                    ************                    
                                                                     ***********                    
                                                                          **                                                       

原图为:
在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全 洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值