Python 板


LINE

※ 引述《oneonesix (小当家)》之铭言: : 例 : A= [1,2,3,4] : B= [5,6,7,8] : C= [1,3,4,5,7] : 然後我需要A和C比对, : 如果一样就显示相对於A同位置的B, : A和B的个数都是一样的 : 例如 : A[3] = C[2] ,然後显示B [3] : 小弟目前只会笨笨的用回圈去比对, : 但是资料量一大的话就会很久 : 请问有大大有更好的方法吗? : 例 : for i,j in zip(A,B): : for k in C: : If i==k: : Print(j) : ----- : Sent from JPTT on my iPhone 闲着玩一下,不过不清楚是效能还是笑能XD ============================================== enumerate 历遍A同时产生index,用index取出对应的B for index, a in enumerate(A, start=0): if a in C: print(B[index]) 结果: 5 7 8 ============================================== 单行化 new_list = list(B[index] for index, a in enumerate(A, start=0) if a in C) print(new_list) 结果: [5, 7, 8] ============================================== map+lambda 跟上面差不多,只是想试试map,结果好像不太适合 new_list = list(map(lambda a, b: b if a in C else None, A, B)) print(new_list) 结果: [5, None, 7, 8] 这个if必须要有else,我又找不到Null的方式 也不能pass/continue来跳过,只能用None 失败 ============================================== filter+lambda 改用filter 但是好像只能接1个iterable,只好zip成单个x x[0]=a, x[1]=b 回传x (依然是zip的A跟B) new_list = list(filter(lambda x: x[0] in C, zip(A, B))) print(new_list) 结果: [(1, 5), (3, 7), (4, 8)] -------------------------- unzip new_list = list(zip(*new_list)) print(new_list) 结果: [(1, 3, 4), (5, 7, 8)] -------------- A 跟 B filtered_A, filtered_B = new_list print("new_list[0]={}, new_list[1]={}".format(filtered_A, filtered_B)) 结果: new_list[0]=(1, 3, 4), new_list[1]=(5, 7, 8) ============================================== 单行化 new_list = list(zip(*filter(lambda x: x[0] in C, zip(A, B))))[1] print(new_list) 结果: (5, 7, 8) 用底线忽略A,结果一样 _, new_list = zip(*filter(lambda x: x[0] in C, zip(A, B))) https://i.imgur.com/0fdmpKt.jpg --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.176.49 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1599979039.A.7B1.html ※ 编辑: x94fujo6 (114.33.176.49 台湾), 09/13/2020 14:54:12
1F:推 oneonesix: 谢谢大大分享 09/14 06:02







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

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

TOP