python 一行太长_代码又长又复杂?总结Python一行代码就能干的事儿,不能更简单了...

Python语言因为独特的设计思想比起其他语言来说在表现力上有很大的优势。

今天我们通过几个一行Python代码的例子来验证Python的强大表现能力。

通过对这些例子的解读,我们可以更好的学习和了解Python语言。

一行代码对字符串倒序排列

切片的参数格式: [start_index: stop_index: step]

如果不填写切片起止位置参数,那么默认是取字符串全部内容,当step参数(步长)为负数时,字符串会自动从右往左取值,-1是依次挨个取值,所以可以得到一个倒序的字符串。

print('我爱你'[::-1])

21a4462309f7905290ea56a60865dacc79cbd5c8.jpeg?token=039d300c243e5b9a57398164b35c4625&s=EEA0D54B1BA49F684A519C0F0000F0C3

一行代码输出当前农历年份

print('猴鸡狗猪鼠牛虎兔龙蛇马羊'[2020%12])

2934349b033b5bb53d84449a3245d83fb700bc9b.jpeg?token=ce981547c8b830c57a28f21b737eed7b&s=AE80D54FCBE991685AC5940F0000F0C2

将12生肖按固定顺序排好形成一个字符串,再用切片的方法获取其中一个值,对当前年份数字进行12取模得到的数字就是12生肖字符串的元素下标地址。

一行代码打印9*9乘法表

一行输出9*9 乘法表只是把原本应该写两个for循环的代码做了一下精简压缩。

print('\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))

8326cffc1e178a8203df72eef5957e8ba877e83d.jpeg?token=78ddc3ade28bb0dd66e59b0e7a1a2408&s=EEA0D54FCBA1B1704ED1500F000070C1

来看看完整版的代码:

for x in range(1, 10): for y in range(1,x+1): print('%s*%s=%-2s\t' % (y,x,x*y), end='') print()

一行命令启动一个HTTP Server

python -m http.server 8080

a8ec8a13632762d0411acf68ab7a05fc503dc659.jpeg?token=461311f80af3d5a72d3d5485015652f6

该命令可以在控制台运行,它会在把控制台当前目录下的文件和目录映射出来作为可访问资源。通常可以用于把自己电脑上的文件内容共享出来给别人访问。

03087bf40ad162d9b5029a2f1549a4ea8b13cdb5.jpeg?token=c846d8a543d72ae4dc1ba572c0c72d21&s=6392622A62D9C02D18D480DA000080B2

一行代码交换两个变量的值

如果学过C语言的朋友看到下面这种交换变量的方式会觉得很奇葩。

a, b = b, a

因为Python的变量并不直接存储值,而只是引用了一个内存地址,所以在交换变量时,只是交换了引用的地址。

参照以下代码:

import disdef func(a,b): a,b = b,a print(a,b) a=1b=2func(a,b)dis.dis(func)

dis模块用于分析Pyhton字节码。

以下结果我们可以根据输出的结果观察Python代码在编译器中的执行过程。

95eef01f3a292df58c0582e2bfa7516636a8739a.jpeg?token=0ed8c3b782cb2af1717eadeb89080875&s=A6A0D54BD2A6975F1A5D950A000030C3

一行代码打印迷宫

print(''.join(__import__('random').choice('/\\') for i in range(60*30)))

8326cffc1e178a829b939a06f5957e8ba877e801.jpeg?token=cb8f836dc25812e99034bdf1a99f6af1&s=C4A0D75BD7B180735C75940F010030C1

这行代码首先通过 __import__内部函数引用了 random库,用于在Python中产生随机数,通过random.choice()方法来选择随机数,表示每次从备选字符串里选择随机选择一个字符串。

然后构造了一个迭代对象,产生了60*30次循环,并将每一次循环产生的字符串放入生成器里。

最后通过字符串的join方法对生成器进行作用,得到完整的1800个字符信息,用join的好处在于效率高。

因为Python的字符串是不可变对象,也就意味着如果每次我们对其进行拼接都会产生一个新的对象,这样会产生1800次对象,效率比较低。通过join方法就不会出现这样的问题了,一次搞定。

一行代码输出文件内容

print(''.join([line for line in open('test.go')]))

c995d143ad4bd11308a9e3805e39a9094afb05b3.jpeg?token=154884d48046bafbc4b8c7e862792457&s=EEA0C54F57F4AE6A4E4D950F0000E0C0

这行代码其实看起来也很简单,通过open()函数打开一个 "test.go"的代码文件会隐性的得到一个文件对象,然后对这个文件对象进行迭代求值,将每一行对内容放到line变量里,形成一个列表推导。

最后用join拼接起所有行的信息,输出出来就是整个文件内容了。

一行代码输出评星

print("★★★★★☆☆☆☆☆"[5-3:10-3])

43a7d933c895d143b89a121075668f045baf07b4.jpeg?token=e1c7c77c5ba96046464609e6c6eaeca8&s=AE80C54BEBED91684EF59C0F0000E0C2

假设预定星级是3星,我们可以巧妙的通过Python字符串切片的方式来实现效果。

将满星5颗和空星5颗拼在一起,然后通过切片的起止位置来截取内容,完美实现效果。

一行代码进行逻辑判断

在其他语言里有所谓的三目运算符来达到一行代码进行逻辑判断的效果。

b = a > 1? "执行表达式1":"执行表达式2"

在Python没有三目运算符,所以通过类似的替代办法来实现。

print(True if len("我是卧龙岗散淡的人") == 10 else False)

u=1867978684,996486337&fm=173&app=49&f=JPEG?w=640&h=184&s=A680D54BEFE193684E55D40F0000F0C2

欢迎关注我 “纸飞机编程”,获取更多有趣的Python编程信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值