求问:两个 list 或者是 tuple,找出在 A 且不在 B 中的元素。

2012-07-05 23:57:25 +08:00
 sethverlo
求问哪种方法快一点儿。。目前只能想到手工 for 。。

其实这个 list 或者 tuple 是从 xml 转换过来的。

直接处理字符串的话结果好像不对⋯⋯

>>> a = "<name>123</name><name>345</name><name>456</name>"
>>> b = "<name>123</name><name>333</name>"
>>> a.split(b)
['<name>123</name><name>345</name><name>456</name>']
>>> b.split(a)
['<name>123</name><name>333</name>']

求问这样的怎么处理比较好⋯⋯
3500 次点击
所在节点    Python
17 条回复
lisztli
2012-07-06 00:03:47 +08:00
sa, sb = set(a), set(b)
return list(sa - sb)
sethverlo
2012-07-06 00:11:14 +08:00
@lisztli 不对啊⋯⋯咦你不是饭否 api 的那个维护者么。。。

>>> a = "<id>123</id><id>345</id><id>456</id>"
>>> b = "<id>123</id><id>333</id>"
>>> sa, sb = set(a), set(b)
>>> list(sa - sb)
['5', '4', '6']

>>> a = ['123', '456', '567']
>>> b = ['123,', '555']
>>> sa, sb = set(a), set(b)
>>> list(sa - sb)
['123', '456', '567']
bcxx
2012-07-06 00:18:04 +08:00
@sethverlo 你第二个例子的 b 写错了。 第一个应该先将 string split 掉
lisztli
2012-07-06 00:19:02 +08:00
>>> a = ['123', '456', '567']
>>> b = ['123,', '555']

再看一遍代码……
lisztli
2012-07-06 00:22:00 +08:00
@sethverlo

>>> a = ['123', '456', '567']
>>> b = ['123,', '555']

再看一遍代码……

好汉不提当年勇,何况我是个怂人
sethverlo
2012-07-06 00:22:08 +08:00
@bcxx
@lisztli

解决了。谢谢!
sethverlo
2012-07-06 00:22:59 +08:00
@lisztli “当年勇”⋯哎⋯⋯
lisztli
2012-07-06 00:26:25 +08:00
@sethverlo 我后面说何况了~~
sethverlo
2012-07-06 00:27:03 +08:00
@lisztli 不不。我意思是。饭否。哎。(膜拜巨巨
fanzeyi
2012-07-06 00:43:26 +08:00
a = [1,2,3,4,5]
b = [5,6,7,8]
c = [xx for xx in b if xx not in a]
sethverlo
2012-07-06 00:45:14 +08:00
@fanzeyi 我觉得这样慢吧⋯明天试试。今天懒得动又不想睡觉。Orz⋯
fanzeyi
2012-07-06 00:47:14 +08:00
@sethverlo OI 惯性病吧=_= 这速度在一般情况下还是可以接受的我觉得
sethverlo
2012-07-06 00:48:59 +08:00
@fanzeyi 自从 GAE 弄挂了我俩儿子以后我就特别纠结这个事情⋯⋯
fanzeyi
2012-07-06 00:49:20 +08:00
@sethverlo 你还在用GAE啊……
sethverlo
2012-07-06 00:51:19 +08:00
@fanzeyi 先试试呗。不够用了再说⋯我们那个 vps 我一直蛋疼那速度。。。下一个再不换 linode 我就剁 jj 去。。。
fanzeyi
2012-07-06 00:53:50 +08:00
@sethverlo 换吧…… 我马上就要买第三年的 Linode 了……
ch_linghu
2012-07-12 10:51:10 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/41550

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX