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

python极简主义_极简主义的践行者:一行python有哪些玩法?

我最近浏览到一个讨论,问“一行代码”可以实现什么。我想这样的问题简直就是为Python而生的。于是我自己想了想,决定动手实践几个一行Python的操作。

一行Python打印九九乘法口诀。

这个问题我以前就遇到过,不过一直没动手写出来。大体的思路就是利用Python的列表生成式,加上循环嵌套。用字符串的join函数来控制间隔与换行。本质就是一种矩阵式的行列循环,搞清楚变量的逻辑就没什么问题。

代码:

print('\n'.join([' '.join(['{}*{}={}'.format(y,x,x*y)foryinrange(1,x+1)])forxinrange(1,10)]))

得到的效果:

一行Python打印杨辉三角。

其实在论坛里看见有朋友用一行Python打印斐波那契数列(也就是1,1,2,3,5,8,13……每一项等于前两项之和),我想,同样是用一行搞定迭代,何不玩个有难度的?于是我写了个一行代码打印杨辉三角,确实挺难的。主体思路还是迭代,利用列表的动态可变性,在循环中不断改变列表值。

代码:

[print(' '.join(map(str, x)))forxin[[[1]]+[[item.append([1]+[item[i][j]+item[i][j+1]forjinrange(len(item[-1])-1)]+[1]), item][-1][-1]foritemin[ [[1]] ]foriinrange(9)]][]]

得到效果:

一行Python代码统计词频。

其实很想用一个函数式编程的方法搞定这个问题,不过暂时没解决出来。只好犯规调个包,用collections里的Counter来操作一番了。

比如对于一个字符串:

string='Andy Jamesand Andy Smith are fighting with James Smith'

利用代码:

[print('{}:{}'.format(k, v))fork, vinCounter(string.split(' ')).items()]

得到词频统计结果:

一行Python代码画心心表白。

代码是死的,但人是活的,生活总归要有一些情趣。在网上查到了一个心形表达式后,我想到可以用Python来大致画出这个形状。这个代码简直有用,想象你在给大妹子庆生的时候发一段代码,往IDE里一跑。简直完美!

代码:

print('\n'.join([''.join([('BabyILoveU'[(x-y)%10]if( (x*0.04)**2+(y*0.1)**2-1)**3-(x*0.04)**2*(y*0.1)**3

效果图:

今天尝试了几种“一行Python”的技巧,感觉日后还有诸多开发的空间。下一次我准备以函数式编程为主题思想,拓展更多的“一行”玩法。

话说回来,虽然Python以简洁闻名,但是类似的一行代码,仍然只是茶余饭后的消遣。真正在工作、学习中,代码可读性和算法复杂度,比这种强行实现的简洁要更重要得多。类似本文的一行玩法,在实际工作中绝不推荐尝试。

内容来自腾讯新闻

相关文章:

  • idea中maven找不到本地仓库jar包_Mac Intellij Maven使用本地仓库的jar包
  • mysql默认安装目录 linux_关于Linux安装mysql默认配置文件位置详解
  • jquery mysql实现加入购物车_jquery-实现加入购物车效果
  • mysql 查询最近7天 时间戳数据_mysql查询今天、昨天、7天、近30天、本月数据
  • 景安mysql主机_景安国内虚拟主机空间如何创建数据库
  • mysql新手问题大全_初学者必读:MySQL数据库常见问题汇总
  • qopenglwidget 拖动窗口时图形消失_CAD画图时鼠标原来是这么用的!
  • mysql root 赋权_mysql 里对root及普通用户赋权及更改密码的一些命令
  • freebsd linux mysql_怎样在linux或unix服务器上安装、使用MySQL
  • mysql eav_检索MySQL EAV结果作为关系表的最佳性能是什么
  • mysql与后台乱码问题_MySQL+PHP[utf-8]乱码原因与解决方法
  • MySQL集函数随机数_MySQL的随机数函数rand()的使用技巧
  • jmx编程监控mysql_JMX-JAVA进程监控利器
  • zookeeper清空hbase_zookeeper和HBASE总结
  • ldap radius mysql_OpenLDAP+FreeRADIUS+MySQL+RP-PPPOE 构建PPPOE服务器
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • angular2开源库收集
  • AngularJS指令开发(1)——参数详解
  • Druid 在有赞的实践
  • Intervention/image 图片处理扩展包的安装和使用
  • Java应用性能调优
  • Laravel核心解读--Facades
  • Markdown 语法简单说明
  • MYSQL 的 IF 函数
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Promise面试题2实现异步串行执行
  • Sass Day-01
  • Spring Boot快速入门(一):Hello Spring Boot
  • 机器学习学习笔记一
  • 前嗅ForeSpider中数据浏览界面介绍
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 移动端唤起键盘时取消position:fixed定位
  • 中文输入法与React文本输入框的问题与解决方案
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • Spring Batch JSON 支持
  • ​ArcGIS Pro 如何批量删除字段
  • (+4)2.2UML建模图
  • (¥1011)-(一千零一拾一元整)输出
  • (8)STL算法之替换
  • (AngularJS)Angular 控制器之间通信初探
  • (javascript)再说document.body.scrollTop的使用问题
  • (libusb) usb口自动刷新
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (六)Hibernate的二级缓存
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)插入排序
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ./configure,make,make install的作用
  • .NET MVC第五章、模型绑定获取表单数据
  • .net MySql
  • .net 调用php,php 调用.net com组件 --
  • .NET 中 GetProcess 相关方法的性能
  • .NET设计模式(11):组合模式(Composite Pattern)