Python 板


LINE

※ 引述《hodwaylin (aaboy)》之铭言: : Hi 各位python 高手们 : 最近在自学python, 请教下面这游戏题目 : 可否有大大愿意分享一下 这题要如何写出简洁的python 语法 供小弟练习参考用 : 感恩喔 : https://i.imgur.com/UeEZHYz.jpg : https://i.imgur.com/uGLFK5E.jpg : https://i.imgur.com/Q0GqzhW.jpg 虽然怎麽看都是作业题,不过今天我想到某个有趣的事情,所以写了这东西: def func(n,m,k):return (a:=[*range(1,n+1)],(i:=0),[(a:=a[:(i:=(i+m-1)% ((n:=n-1)+1))]+a[i+1:],i,a[i%n]) for x in range(k)])[-1][-1][-1] 请全部缩成一行才会正确。然後这Code限定Python 3.8以後版本才跑得动。保证 简洁,一行就能完成。 >>> func(5,2,2) 5 >>> func(5,2,4) 3 >>> func(5,3,4) 4 最可怕的是改一下还可以trace每一步骤的状况。 def func(n,m,k):return (b:=(a:=[*range(1,n+1)],(i:=0),[(a:=a[:(i:=(i+m-1)% ((n:=n-1)+1))]+a[i+1:],i,a[i%n]) for x in range(k)])[-1],[(x[0],x[2]) for x in b])[-1] 同样请缩成一行。 >>> func(5,2,2) [([1, 3, 4, 5], 3), ([1, 3, 5], 5)] >>> func(5,2,4) [([1, 3, 4, 5], 3), ([1, 3, 5], 5), ([3, 5], 3), ([3], 3)] >>> func(5,3,4) [([1, 2, 4, 5], 4), ([2, 4, 5], 2), ([2, 4], 2), ([4], 4)] 结果是个list,其中每一个元素都是(list, int),前面的list表示每一步後剩 下的编号,後面的int表示该步後的幸运者。 结论是list comprehension + walrus operator有够变态。不少人认为walrus operator会成为乱源不是没有道理的XDDD -- 「探寻真实与探寻谎言的难度一样,而要忘掉它们的难度也相同,因为你根本无 法预测你探寻到什麽,更无法预测什麽会被你忘掉。也就是说,就机率而言,你脑里 的记忆其实有一半都是骗人的。放心吧,没那一半你反而活不下去的。」 --克尔斯,谎言事务所暂时所长 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.169.77.203 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1594022612.A.D0A.html ※ 编辑: ddavid (1.169.77.203 台湾), 07/06/2020 16:04:20
1F:推 max36067: 水哦 有够简洁 07/06 19:38
2F:→ OrzOGC: 看到这种我都很头痛...QQ 07/06 20:17
3F:→ as30385438: 这个code review大概不会过 07/06 22:12
4F:推 alvinlin: 很简洁但我看不懂。不过谢谢分享。给推 07/06 23:20
其实这里面就几个技巧: 1. 主要就是:=这个3.8的新东西要知道它怎麽拆成不用它的写法。 2. 怎麽用list comprehension来硬当回圈用(副作用是过程都被记录下来了,但反 过来利用这个副作用反而达成trace完整过程的效果),怎麽改写回去for回圈。 3. 有前後依赖性而必须依序执行的工作,利用tuple来组装达成这个顺序。 这三项都了解後,其实排版一下然後按照这三点逆向改写回去就能换成直接看得 懂的东西了XD。不过也不用浪费这个时间就是,这又不是很难的问题,大家正常写也 写得出来,我只是偶然想试:=跟[ for if ]搭配有多邪恶XD 其实应该有某招可以解决2的副作用XD ※ 编辑: ddavid (1.164.176.211 台湾), 07/07/2020 00:07:29
5F:推 benchen0812: 突然有点理解为啥学JAVA的朋友骂我用PYTHON乱源xd 07/07 10:42
:=是3.8才出来的东西啦,而且也很多人反对根本不去使用(我自己其实也不太 去用),是Python之父Guido van Rossum最终决定加入的,他本人也因此风波决定退 出BDFL这决策位置。所以要骂乱源,八成也不会是因为这东西XD 而且要比程式码难看,很依赖缩排的Python可是远远不及C/C++之类天生就不依 赖缩排、而且还有指标的语言呢XD。ioccc大赛(1984)开始时,Python(1991)都 还不存在呢XDDD ※ 编辑: ddavid (1.169.77.203 台湾), 07/07/2020 13:13:35
6F:推 bugbug777: 海象可爱 07/07 14:05
※ 编辑: ddavid (1.169.77.203 台湾), 07/07/2020 18:34:21
7F:→ s860134: 海象这种东西个人只会在 判断式用, e.g. re.match 07/08 01:06
8F:推 HYDE1986: 也太简洁XDDDDD 07/08 10:41
其实我仔细回头审视,发现好像还有一两个小地方写法是相对累赘,应该还能再 精简一点XD ※ 编辑: ddavid (1.169.77.203 台湾), 07/08/2020 16:26:46







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP