Python 板


LINE

各位再次好 非常感谢各位上篇的帮忙 我後来又尝试了回应中M大所说的 资源重复的情形 我将List中的资料改成(id,value)这种状态 list = [(0,1),(1,2),(2,1),(3,1),(4,0),(5,0),(6,3)] 然後再从中做分层筛选 第一层 筛选出相加=2的 第二层 筛选出剩下的资料,相加等於1的 第三层 剩余的资料也保留 (已经用过的不能再用) 如果单纯使用Combination 那就会发生重复的情形 像是 ((0,1),(2,1)) 选出来後 之後又有 ((0,1),(3,1)) 所以我多加一些if去避免重复 以下是我目前写的成果 https://ideone.com/OQyEFz 虽然达到了想要的结果 但是觉得实在很冗长 我又查了itertools的其他函数 但是好像找不到可以用於简化目前程式的工具 因此想再次请教各位 有没有办法使其再简化一点 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.114.31
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1464201141.A.7BA.html
1F:→ dream0830: 目前把check的部分删除了 因为有重复会直接return就不 05/26 04:36
2F:→ dream0830: 用做check了 05/26 04:36
3F:推 eight0: 用 collections.Counter 05/26 05:25
4F:→ eight0: https://ideone.com/zegl42 05/26 05:25
谢谢 可是我觉得虽然单一个元素筛选起来很方便,用於两个元素好像不太适合呢 我若找了2-i,我也分不清楚是哪一组(如果资料更多的情形) 序号是想让他个别独立 不过用counter先把个别value先分类好像也不错 ,来改改看好了
5F:推 KJFC: 有些c要写个好几行 py一个collect就解决了 05/26 12:02
6F:→ uranusjr: 我觉得这个问题要先回到根本来分析, 才能设计出好的写法 05/26 13:06
7F:→ uranusjr: 这个需要从需求开始看, 晚点来完整回一下好了 05/26 13:07
好的谢谢你
8F:推 s06yji3: (1,2)和(4,0)还是(1,2)和(5,0)? id小的先取? 05/26 20:42
id的顺序不重要,先遇到就先配,如果(5,0)摆得比(4,0)还前面,那就会是1050 ※ 编辑: dream0830 (123.195.114.31), 05/26/2016 21:11:00
9F:推 s06yji3: https://ideone.com/jziqGx 05/26 21:13
10F:→ s06yji3: 我用dict来确认和是不是2(或1),是的话就加入到tmp,并 05/26 21:14
11F:→ s06yji3: 把存在dict的item删掉,如果不存在的话就加到dict 05/26 21:15
12F:→ s06yji3: return有两个list,一个是匹配好的,另一个是剩下的 05/26 21:16
13F:推 s06yji3: 痾....有bug请先忽略QQ 05/26 21:25
对耶 我想说去比我分出来的组确认有没有分配过就好了,结果组成一对反而难比 用一个新的,这样比较好比,赞赞~ 感谢想法~ ※ 编辑: dream0830 (123.195.114.31), 05/26/2016 21:45:50
14F:推 s06yji3: 修好了QQ 05/26 22:09
15F:→ s06yji3: bug是没匹配到的数据会被洗掉 05/26 22:10
ok的啦 我容易钻牛角尖 想了a就想不到b 感谢你提供新想法XD ※ 编辑: dream0830 (123.195.114.31), 05/27/2016 00:25:07
16F:→ penguin7272: https://ideone.com/lnqs0c 可以的话不太想用 idx 05/27 02:04
17F:→ penguin7272: 或 value 之类的的命名, 所以还是要看本来的问题 05/27 02:05
谢谢帮忙,我又查了一下defaultdict是什麽才弄懂你的写法 另外想请问 我试着让ID重复,想找出个别ID中最多的值 listA = [(0,1),(1,2),(1,3),(2,1),(2,2),(3,1),(4,0),(5,0),(6,3)] 我把原本的listA的ID 1跟2各增加一个 然後想找出listA里面KEY最多的 我尝试了defaultdict,写这样 result = defaultdict(int) for id,num in listA: result[id] += 1 for k, v in result.items(): print(k,v) 我这样能获得每个ID各有几组在里面 但是我希望能把最大值的ID筛出来 放到MaxList中,字典或list都可以 MaxList = {1,2} 或者 MaxList = [1,2] 因为ID为1跟2的各别都两组所以最大 目前用了max,但是失败(我想是後面我放错了 我想max v,输出k) 新手问题多 还烦请指教 m(_ _)m ※ 编辑: dream0830 (123.195.114.31), 05/28/2016 04:51:15
18F:→ dream0830: 感谢各位热心帮忙 05/28 04:51
19F:→ dream0830: max(result, key=lambda item, item[1] 05/28 05:04
20F:→ dream0830: 自解 MAX最大後再筛出其他一样大的 05/29 03:20







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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP